Oauth Google访问令牌请求:无效令牌/签名
我已经花了三天的时间来实现我自己的GoogleOAuth方法。继续碰钉子。不确定是什么变量与问题有关。我需要新鲜的眼睛和适当的建议。我希望谷歌在“无效令牌”之外更具体一些。我可以在没有令牌机密的情况下对请求进行签名,但仍然会得到相同的错误。所以我不确定我的签名是否仍然无效,或者我是否有太多的请求。我不知道。这绝对令人沮丧 下面是我最新的代码尝试,我认为应该可以工作: 我获取请求令牌数据,并将其存储在数据库中(解码),然后重定向用户进行授权Oauth Google访问令牌请求:无效令牌/签名,oauth,access-token,Oauth,Access Token,我已经花了三天的时间来实现我自己的GoogleOAuth方法。继续碰钉子。不确定是什么变量与问题有关。我需要新鲜的眼睛和适当的建议。我希望谷歌在“无效令牌”之外更具体一些。我可以在没有令牌机密的情况下对请求进行签名,但仍然会得到相同的错误。所以我不确定我的签名是否仍然无效,或者我是否有太多的请求。我不知道。这绝对令人沮丧 下面是我最新的代码尝试,我认为应该可以工作: 我获取请求令牌数据,并将其存储在数据库中(解码),然后重定向用户进行授权 Token: 4/M1ZCp6Y115rBqxYz3v1
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
不幸的是,当您对令牌进行双重编码时,您是对的,最糟糕的是,您也必须为您的验证器进行双重编码 要帮助您构建签名,请务必检查