2

私は自分のサイトに優れた tmhOAuth php ライブラリを利用しています。しかし、auth.php から受け取ったユーザー トークン/シークレットにアクセスする方法がわかりません。(たとえば、現在のユーザーの友人のリストを取得しようとするとき。)

に記載されています:

* Although this example uses your user token/secret, you can use
* the user token/secret of any user who has authorised your application.

auth.phpの例をうまく利用できましたが、受け取った USER トークン/シークレットをどのように利用すればよいですか? 例のように、次のように記述されているだけです。

$tmhOAuth = new tmhOAuth(array(
  'consumer_key' => 'YOUR_CONSUMER_KEY',
  'consumer_secret' => 'YOUR_CONSUMER_SECRET',
  'user_token' => 'A_USER_TOKEN',
  'user_secret' => 'A_USER_SECRET',
));

明らかに、ハードコーディングはうまくいかないので、単純に、現在ログインしているユーザーのトークン/シークレットはどこにあるのだろうか?

これは、保存された資格情報の例です。

// already got some credentials stored?
} elseif ( 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;
  } else {
    outputError($tmhOAuth);
  }
4

1 に答える 1

2

ユーザーは、最終的にユーザーごとにアクセストークンを生成するoauthを介して承認することになっています(どこかに保存する必要があります)。ストレージからそのトークンを取得し、リクエストでそれを提供すると、アクセスが許可されます。したがって、ユーザーはアクセスを許可する必要があり、将来の使用のためにアクセス トークンとシークレットを保存する必要があります。

要するに、あまり具体的ではなく、技術的に100%正確ではありませんが(私は思います)、用語に従うことが明確であることを願っています:

oauth では、アプリ全体のトークンとシークレット、コンシューマー トークンとシークレットを要求します。

これらのコンシューマー トークンを使用すると、プロバイダーからリクエスト トークン、シークレット (および通常はナンス トークンも) を要求できます。これにより、アプリが「プロバイダーである私によって許可されたアプリ x」であることを識別できるようになります。

このリクエスト トークンを使用して、特定のユーザーのアクセス トークンをアプリに要求できます (自分の側にいるユーザーを知っていて、そのユーザーが自分の側で知っているか見つけ出す)。通常、ユーザー自身がアプリのアクセスを承認する必要があります。すべてうまくいきます (つまり、ユーザーは OK と答えます) 最終的なアクセス トークンとシークレットを受け取ります。これを使用して、ユーザーの代わりにリモート サイトに接続できます。この時点で、後で使用するためにトークンを物理的に保存する必要があります (データベース、テキストファイルなど)。

ユーザーの有効なアクセストークンとシークレットが保存されている限り、最初の手順を繰り返す必要はありません。

それらを取得したら、それらを「user_token」と「user_secret」に入れるだけで間違いありません(このライブラリを使用したことはありません)。アプリのコンシューマートークン/シークレットと一緒に認証してください。

これらすべてをすでに知っていて、すぐに使える答えではない場合は申し訳ありません。他のユーザー用のアクセス トークンをまだ持っていないというのが私の印象です。

于 2012-06-08T13:18:17.607 に答える