2011-08-11 13 views
0

3日間、独自のGoogle oAuthメソッドを実装しました。傷つき続ける。どの変数が問題に関係しているのかは分かりません。私は新鮮な目と適切なアドバイスが必要です。私は、Googleが「無効なトークン」の外でより具体的であったことを望む。私はNOトークンの秘密で要求に署名することができ、私はまだ同じエラーを取得します。だから、私の署名がまだ無効かどうか、または私があまりにも多くの要求をしているかどうかは分かりません。何も思いつきません。それは絶対にイライラしています。認可するユーザーをリダイレクトする前に(デコード)私は私のリクエストトークンのデータを取得し、データベースに格納しGoogleトークンのリクエスト:無効なトークン/署名

は、ここで私は動作するはずだと思うのコードと私の最新の試みです。

Token: 4/M1ZCp6Y115rBqxYz3v1Dq9bbTCrr 
Secret: f39Fuyg6MwlW35w4UIKNDBag 
Verifier: kZt189Tk7tTrTiodhhk_QOxX 

アクセストークンを取得するために3つすべてを取得し、それらを私のメソッドに渡します。トークンを無効にしていた私のトークンを二重にエンコードしていることがわかりました。今私は通常の無効な署名をもう一度得ています。私はそれほど確実ではない。

アクセストークン方法:あなたのトークンをコードする二だったとき

public function oAuthGetAccessToken($authToken, $authTokenVerifier, $authTokenSecret) 
    { 
     $nonce = self::generateNonce(); 
     $time = time(); 
     $url = 'https://www.google.com/accounts/OAuthGetAccessToken'; 

    $authParams = array(
        'oauth_consumer_key' => 'anonymous', 
        'oauth_token' => $authToken, 
        'oauth_verifier' => $authTokenVerifier, 
        'oauth_signature_method' => 'HMAC-SHA1', 
        'oauth_timestamp' => $time, 
        'oauth_nonce' => $nonce, 
        'oauth_version' => '1.0' 
       ); 
    $baseString = self::getBaseString('GET', $url, $authParams); 

    $key = self::urlencodeRFC3986('anonymous') . '&' . self::urlencodeRFC3986($authTokenSecret); 

    $signature = self::hmacsha1($key, $baseString); 

    $postParams = array(
       'oauth_version' => '1.0', 
       'oauth_nonce' => $nonce, 
       'oauth_timestamp' => $time, 
       'oauth_consumer_key' => 'anonymous', 
       'oauth_token' => $authToken, 
       'oauth_verifier' => $authTokenVerifier, 
       'oauth_signature_method' => 'HMAC-SHA1', 
       'oauth_signature' => $signature 
       ); 

    $authHeaderString = ''; 
    foreach($postParams as $key => $value) 
    { 
     $authHeaderString .= $key .'="' . self::urlencodeRFC3986($value) . '", '; 
    } 

    $authHeaderString = rtrim($authHeaderString, ', '); 

    $headers = array('Authorization: OAuth ' . $authHeaderString); 

    $rest = new Rest(); 
    echo $rest->OAuthHttpGetRequest($url, $headers); 
} 



Base String: GET&https%3A%2F%2Fwww.google.com%2Faccounts%2FOAuthGetAccessToken&oauth_consumer_key%3Danonymous%26oauth_nonce%3Dc0c072fadcc9e9de98e00f7478cd0607%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1313087177%26oauth_token%3D4%252FM1ZCp6Y115rBqxYz3v1Dq9bbTCrr%26oauth_verifier%3DkZt189Tk7tTrTiodhhk_QOxX%26oauth_version%3D1.0 

答えて

0

は、悲しいことに、あなたは正しかった、と最悪、あなたもあなたの検証のためにそれを行うようになりました!

署名を作成する際には、vimeo documentationを必ず確認してください。

関連する問題