2010/02/03

[OAuth][php]AccessTokenを取得する

前回は、認証されたRequestTokenを取得する方法を書いたので、AccessTokenを取得する方法について書きたいと思います。

mb_http_output("utf-8");
require_once('HTTP/Request.php');

//urlの設定
$url = "https://www.google.com/accounts/OAuthGetAccessToken";
$method = "GET";

$params["oauth_consumer_key"] = "anonymous";
$params["oauth_nonce"] = md5(microtime().mt_rand());
$params["oauth_signature_method"] = "HMAC-SHA1";
$params["oauth_signature"] = "";
$params["oauth_timestamp"] = time();
$params["oauth_token"] = rawurlencode($_GET["oauth_token"]);
$params["oauth_verifier"] = rawurlencode($_GET["oauth_verifier"]);
$params["oauth_version"] = "1.0";

$params["oauth_signature"] = make_Signature_Base_String($method,$url,$params);
$params["oauth_signature"] =
base64_encode(hash_hmac("sha1"
,$params["oauth_signature"]
,"anonymous&".前々回取得したoauth_token_secret
,true)
);

$request = new HTTP_Request();
$request->setURL($url);

$request->
addHeader("Authorization"," OAuth");

$request->
addQueryString("oauth_consumer_key",$params["oauth_consumer_key"],false);
$request->
addQueryString("oauth_nonce",$params["oauth_nonce"],false);
$request->
addQueryString("oauth_signature_method",$params["oauth_signature_method"],false);
$request->
addQueryString("oauth_signature",$params["oauth_signature"],false);
$request->
addQueryString("oauth_timestamp",$params["oauth_timestamp"],false);
$request->
addQueryString("oauth_token",$params["oauth_token"],true);
$request->
addQueryString("oauth_verifier",$params["oauth_verifier"],true);
$request->
addQueryString("oauth_version",$params["oauth_version"],false);

//メソッドをセット
$request->setMethod($method);

//リクエストを実行
$result = $request->sendRequest();

上を実行することによって、$resultに「oauth_token=hoge&oauth_token_secret=foo」みたいな感じで結果が返ってくるんだけど、返ってきたoauth_token、oauth_token_secretを使ってAPIの問い合わせを行ってもエラーが発生するんだよなー。

なぜだろー??

0 コメント:

コメントを投稿