0

最終的な(永続的な?)OAuthユーザートークンとOAuthユーザーシークレットが正常に入力されるテーブルを使用してデータベースをセットアップしました。私が理解していないのは、特に最後のログインから2週間が経過している場合に、現在のユーザーのIDが何であるかをどのように知る必要があるかということです。私のアプリはすべてのユーザーによって承認されているので、理論的にはTwitterは現在のユーザーの承認されたアプリのリストを見て、TwitterユーザーIDを共有できますよね?(現在のユーザーに代わって)彼のIDを要求する良い方法はありませんか?一時的なトークンはどういうわけかこれを容易にすることができるはずだと思います...それが役立つ場合、私のアプリのすべてのユーザーは、いくつかの追加情報を持つ単なるTwitterアカウントです。データベースにあるトークンとシークレットを利用するための最良の方法を探しています...

私はPHP(ライブラリ:Codebird-PHP&tmhOAuth)を使用しているので、PHPで例を示すことができればいいのですが、実際には、保存しているこの情報をどのように使用するのかを知りたいだけです。 。

ありがとう!

4

2 に答える 2

3

Web サイトのユーザーを識別し、適切な Twitter ID にリンクするユーザー名またはユーザー ID と一緒にデータを保存すると仮定しています。ユーザーの基本情報を取得するには、承認後にエンドポイントhttps://api.twitter.com/1.1/account/verify_credentials.jsonGET. 1.1 API のドキュメントは、ここにあります。

これは配列を返します。またはの下に、ユーザー名 uder"screen_name"とユーザー ID があります。"id""id_string"

質問はGet current user's info from Twitter API の重複の可能性がありますが、その議論は非推奨の API を指しているため、回答を追加しました。それでも、そこにあるコードは依然として有用です (Abraham William のライブラリを使用しているように見えますが、手順は基本的に同じです)。クラスと関数を Matt Harris のライブラリにあるものに置き換えます。私はコードバードを知りません、ごめんなさい!

EDIT:コードサンプルも提供しています(tmhOAuthに問題がありますが、テスト済みで動作しているため、時々自分用にのみ使用します。投稿しようとすると、奇妙なエラーコードが返されることがあることに気付きました。理由がわからない):

      // Authentication page, with button. You have already connected to your database

        $mywebsiteuser = $_SESSION['website_user_id'];
        $query= "SELECT * FROM `table_where_you_store_twitter` WHERE website_user_id ='$mywebsiteuser'";
        $sql= $mysqli->query($query) or die($mysqli->error.__LINE__); // or whatever else to check is the query fails.
        if ($sql->num_rows != 0){

        //etc. retrieve data and set the sessions.


       // already got some credentials stored? 
    if ( isset($_SESSION['access_token']) ) {
      $tmhOAuth->config['user_token']  = $_SESSION['access_token']['oauth_token'];
      $tmhOAuth->config['user_secret'] = $_SESSION['access_token']['oauth_token_secret'];

      $code = $tmhOAuth->request('GET', $tmhOAuth->url('1/account/verify_credentials'));
      if ($code == 200) {
        $resp = json_decode($tmhOAuth->response['response']);
        echo $resp->screen_name;
        echo  $resp->id;
//Etc. Instead of printing them you it's a good idea to store them in the db.
      } else {
        outputError($tmhOAuth);
      }
    // we're being called back by Twitter
    } elseif (isset($_REQUEST['oauth_verifier'])) {
      $tmhOAuth->config['user_token']  = $_SESSION['oauth']['oauth_token'];
      $tmhOAuth->config['user_secret'] = $_SESSION['oauth']['oauth_token_secret'];

      $code = $tmhOAuth->request('POST', $tmhOAuth->url('oauth/access_token', ''), array(
        'oauth_verifier' => $_REQUEST['oauth_verifier']
      ));

      if ($code == 200) {
    //etc.

とにかく、ユーザーの情報を取得するには、最初にアプリを承認する必要があります。Twitterではなく、Webサイトでユーザーのセッション変数を使用して、ユーザーから何かがあるかどうかを確認します。何も保存されていない場合は、アプリを承認するように依頼します。これが役立つことを願っています。

于 2013-03-19T14:02:20.460 に答える
0

アクセストークン : 1274865264 -QiVY50RGnmJz6AU9IPRxxxiXfv4DYqo0nj6wg8hS

アクセストークンシークレット: fZQnHSuSpwARicIdLqkqQLy1JeG9LxrbNIRKypWcGR

アクセストークンの最初の部分はユーザーIDです

于 2013-03-19T14:07:29.470 に答える