0
一直在倒戈實施我自己的Google oAuth方法三天。不斷打擊。不知道有什麼變數可以解決問題。我需要新鮮的眼睛和適當的建議。我希望Google在「無效令牌」之外更具體。我可以用NO token secret來簽署請求,但我仍然會得到同樣的錯誤。所以我不確定我的簽名是否仍然無效,或者我的瘋狂請求太多。我不知道。這是絕對令人沮喪的。Google訪問令牌請求:無效令牌/簽名
這裏是我的最新嘗試的代碼,我認爲應該工作:將用戶重定向到授權之前
我得到了我的請求令牌數據,並將其存儲在數據庫中(解碼)。
Token: 4/M1ZCp6Y115rBqxYz3v1Dq9bbTCrr
Secret: f39Fuyg6MwlW35w4UIKNDBag
Verifier: kZt189Tk7tTrTiodhhk_QOxX
我把所有這三個,並將它們傳入我的方法來獲得訪問令牌。我發現我對令牌進行了雙重編碼,導致令牌無效。現在我再次得到通常的無效簽名。我並不確定如何。
訪問令牌方法:
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