私はOAuthを使用してGoogle Webサービス(gmail)に接続するためにZend Frameworkを使用しています。次のコードは大丈夫です。拒否されたアクセスは検出できません。ユーザが「拒否」にヒットする場合たとえば、私ははというエラーを取得します「トークンのURLから有効なトークンの応答を取得できませんでした:リクエストトークンが無効です」Zend Framework経由のGoogle OAuth - 拒否アクセスの検出
ここでは、コードです:
$THREE_LEGGED_CONSUMER_KEY = 'mydomain.com';
$THREE_LEGGED_SIGNATURE_METHOD = 'HMAC-SHA1';
$THREE_LEGGED_CONSUMER_SECRET_HMAC = 'mySecret';
$THREE_LEGGED_SCOPES = array('https://mail.google.com/');
$options = array(
'requestScheme' => Zend_Oauth::REQUEST_SCHEME_HEADER,
'version' => '1.0',
'consumerKey' => $THREE_LEGGED_CONSUMER_KEY,
'callbackUrl' => 'http://mydomain.com/oauth',
'requestTokenUrl' => 'https://www.google.com/accounts/OAuthGetRequestToken',
'userAuthorizationUrl' => 'https://www.google.com/accounts/OAuthAuthorizeToken',
'accessTokenUrl' => 'https://www.google.com/accounts/OAuthGetAccessToken'
);
$options['signatureMethod'] = 'HMAC-SHA1';
$options['consumerSecret'] = $THREE_LEGGED_CONSUMER_SECRET_HMAC;
$consumer = new Zend_Oauth_Consumer($options);
$conf = new Zend_Config_Ini('../application/configs/application.ini', 'production');
$db = Zend_Db::factory($conf->database);
$sql = 'SELECT * FROM gmail_oauth WHERE id=123 LIMIT 1';
$accessToken = $db->fetchRow($sql);
if ($accessToken['GoogleAccessToken']=='') {
if (!isset($_SESSION['REQUEST_TOKEN'])) {
$_SESSION['REQUEST_TOKEN'] = serialize($consumer->getRequestToken(array('scope' => implode(' ', $THREE_LEGGED_SCOPES))));
$consumer->redirect(array('hd' => 'default'));
}
else {
$accessToken = serialize($consumer->getAccessToken($_GET, unserialize($_SESSION['REQUEST_TOKEN'])));
$data = array('GoogleAccessToken'=>$accessToken);
$db->update('gmail_oauth',$data,'id=123');
unset($_SESSION['REQUEST_TOKEN']);
}
}
$db->closeConnection();
return;
ユーザーが「拒否」打ったときに例外を投げるコードの行は、私がアクセスを拒否された検出するにはどうすればよい
$accessToken = serialize($consumer->getAccessToken($_GET, unserialize($_SESSION['REQUEST_TOKEN'])));
あります?