【PHP】신 TwitterOAuth로 로그인 기능을 구현한다

TwitterOAuth가 어느새 새롭게 되었기 때문에, 새로운 사용법을 메모해 두려고 생각합니다.

의외로 간단할 수 있습니다.

TwitterOAuth 다운로드





먼저 TwitterOAuth 웹 페이지에서 TwitterOAuth를 다운로드합니다. Composer의 설치 방법이 기본적으로 표시되지만 Mannual install 버튼을 클릭하면 TwitterOAuth를 다운로드하는 방법이 표시됩니다.

API 키 발급





API 키의 취득 방법에 대해서는 할애.

디렉토리 구성은 이런 느낌



  • h tp // w w. 그래 mpぇ. 코m/
  • common.php
  • login.php
  • callback.php
  • mypage.php

  • twitteroauth (위의 URL에서 다운로드 한 파일 세트)


  • Twitter API를 Fucking하는 데 필요한 값 정의


    <?php
    
    //common.php
    
    define( 'CONSUMER_KEY', 'Twitterのコンシュマーキー(APIキー)' );
    define( 'CONSUMER_SECRET', 'Twitterのコンシュマーシークレット(APIシークレット)' );
    define( 'OAUTH_CALLBACK', 'http://www.example.com/callback.php' );
    

    login.php 만들기


    <?php
    
    session_start();
    
    require_once 'common.php';
    require_once 'twitteroauth/autoload.php';
    
    use Abraham\TwitterOAuth\TwitterOAuth;
    
    //TwitterOAuth をインスタンス化
    $connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET);
    
    //コールバックURLをここでセット
    $request_token = $connection->oauth('oauth/request_token', array('oauth_callback' => OAUTH_CALLBACK));
    
    //callback.phpで使うのでセッションに入れる
    $_SESSION['oauth_token'] = $request_token['oauth_token'];
    $_SESSION['oauth_token_secret'] = $request_token['oauth_token_secret'];
    
    //Twitter.com 上の認証画面のURLを取得( この行についてはコメント欄も参照 )
    $url = $connection->url('oauth/authenticate', array('oauth_token' => $request_token['oauth_token']));
    
    //Twitter.com の認証画面へリダイレクト
    header( 'location: '. $url );
    

    callback.php 만들기



    Twitter 인증 화면에서 여기로 리디렉션됩니다. 이 작업이 끝나면 mypage.php로 리디렉션됩니다.
    <?php
    
    session_start();
    
    require_once 'common.php';
    require_once 'twitteroauth/autoload.php';
    
    use Abraham\TwitterOAuth\TwitterOAuth;
    
    //login.phpでセットしたセッション
    $request_token = [];  // [] は array() の短縮記法。詳しくは以下の「追々記」参照
    $request_token['oauth_token'] = $_SESSION['oauth_token'];
    $request_token['oauth_token_secret'] = $_SESSION['oauth_token_secret'];
    
    //Twitterから返されたOAuthトークンと、あらかじめlogin.phpで入れておいたセッション上のものと一致するかをチェック
    if (isset($_REQUEST['oauth_token']) && $request_token['oauth_token'] !== $_REQUEST['oauth_token']) {
        die( 'Error!' );
    }
    
    //OAuth トークンも用いて TwitterOAuth をインスタンス化
    $connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $request_token['oauth_token'], $request_token['oauth_token_secret']);
    
    //アプリでは、access_token(配列になっています)をうまく使って、Twitter上のアカウントを操作していきます
    $_SESSION['access_token'] = $connection->oauth("oauth/access_token", array("oauth_verifier" => $_REQUEST['oauth_verifier']));
    /*
    ちなみに、この変数の中に、OAuthトークンとトークンシークレットが配列となって入っています。
    */
    
    //セッションIDをリジェネレート
    session_regenerate_id();
    
    //マイページへリダイレクト
    header( 'location: /mypage.php' );
    

    추가 (2015/03/26)



    11행째가 $request_token = [] 로 되어 있었습니다만, 움직이지 않는 경우가 있다, 라고 하는 것으로 조사해 보았더니, 이 단축기법은, PHP 5.4 이후로 사용할 수 있다, 라고 하는 것이었습니다. ( htp //php. 네 t/마누아 l/쟈/펑구게. type s. 어쩌면 y. php )

    추가 (2015/03/27)



    PHP 5.4부터 array() 의 단축기법인 [] 를 사용할 수 있습니다.
    //以下の2行は、どちらも同じことをしている。
    $hoge = array();
    $hoge = [];
    

    즉, PHP 5.3 또는 그 이전을 사용하고 있는 경우, [] (은)는 사용할 수 없다고 하는 것입니다만, PHP 5.3 (은)는 벌써 서포트가 끊어지고 있기 때문에, 최대한 버전 업 해, 모두.[] (을)를 사용합시다! 라는 것입니다. (자세한 내용은 코멘트 열 참조)

    @le_panda_noir 씨, @mpyw 씨, 고마워요!

    mypage.php 만들기



    이제 사용자 정보를 표시합니다.
    <?php
    
    session_start();
    
    require_once 'common.php';
    require_once 'twitteroauth/autoload.php';
    
    use Abraham\TwitterOAuth\TwitterOAuth;
    
    //セッションに入れておいたさっきの配列
    $access_token = $_SESSION['access_token'];
    
    //OAuthトークンとシークレットも使って TwitterOAuth をインスタンス化
    $connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $access_token['oauth_token'], $access_token['oauth_token_secret']);
    
    //ユーザー情報をGET
    $user = $connection->get("account/verify_credentials");
    //(ここらへんは、Twitter の API ドキュメントをうまく使ってください)
    
    //GETしたユーザー情報をvar_dump
    var_dump( $user );
    
    
    

    이렇게 하면 $user에 사용자 정보가 개체로 저장됩니다.

    실행 결과의 예:
    object(stdClass)[7]
      public 'id' => int 1224353684
      public 'id_str' => string '1224353684' (length=10)
      public 'name' => string 'SofPyon' (length=38)
      public 'screen_name' => string 'sofpyon' (length=7)
      public 'location' => string 'Japan' (length=5)
      public 'profile_location' => null
      (以下まだまだ続くので省略)
    

    그리고는, 사용자 정보를 표시하고 싶은 장소에, 이하와 같이 출력하면 OK(만약을 위해 htmlspecialchars()
    あなたの名前:
    <?php echo $user->name; ?>
    

    Twitter API 문서는 여기



    (참고) $_SESSION['access_token'] 정보(2015-05-04 추가)



    배열.
  • oauth_token
  • oauth_token_secret
  • user_id - 숫자 ID
  • screen_name - 이것이, 이른바 Twitter ID
  • //例
    array(4) {
      ["oauth_token"]=>
      string(50) "(OAuthトークン)"
      ["oauth_token_secret"]=>
      string(45) "(OAuthトークンシークレット)"
      ["user_id"]=>
      string(10) "1224353684"
      ["screen_name"]=>
      string(7) "sofpyon"
    }
    

    실수나 의견 등이 있으시면, 꼭 코멘트해 주세요.

    이 샘플이 작동하지 않는 경우에도 주석을 달아주세요!

    참고문헌



  • Sign in with Twitter - TwitterOAuth
  • htps : ///와 얽히는 th. 이 m/레아레 ct. php

  • 좋은 웹페이지 즐겨찾기