【发布时间】:2016-02-25 12:34:07
【问题描述】:
我正在尝试使用 refreshToken 获取 accessToken,下面我已经发布了我的代码,请有人指导我。
它来自我正在开发的一个 wordpress 插件,我只需要检索 pageViews 和 pagePath 所以不喜欢使用可用的插件。
引用自Use OAuth Refresh Token to Obtain New Access Token - Google API
if( isset( $this->options['authenication_code'] ) ){ //plugin setting page settings
global $wpdb;
$resultset = $wpdb->get_row( 'SELECT `refreshToken` FROM ' . $wpdb->prefix . 'analyticaAnalytics WHERE authenication_code ="' . $this->options["authenication_code"] . '"', ARRAY_A );
var_dump( $resultset['refreshToken'] ); //retrieved refreshToken from database
if ($client->isAccessTokenExpired()) { //boolean true
$client->refreshToken( $resultset['refreshToken'] );
var_dump( $client );//getting blank
}
}
../google-api-php-client/src/Google/Auth/oauth2.php
private function refreshTokenRequest($params)
{
if (isset($params['assertion'])) {
$this->client->getLogger()->info(
'OAuth2 access token refresh with Signed JWT assertion grants.'
);
} else {
$this->client->getLogger()->info('OAuth2 access token refresh');
}
$http = new Google_Http_Request(
self::OAUTH2_TOKEN_URI,
'POST',
array(),
$params
);
$http->disableGzip();
$request = $this->client->getIo()->makeRequest($http);
//var_dump( $request );exit;//response 400, invalid grant
$code = $request->getResponseHttpCode();
$body = $request->getResponseBody();
if (200 == $code) {
$token = json_decode($body, true);
if ($token == null) {
throw new Google_Auth_Exception("Could not json decode the access token");
}
if (! isset($token['access_token']) || ! isset($token['expires_in'])) {
throw new Google_Auth_Exception("Invalid token format");
}
if (isset($token['id_token'])) {
$this->token['id_token'] = $token['id_token'];
}
$this->token['access_token'] = $token['access_token'];
$this->token['expires_in'] = $token['expires_in'];
$this->token['created'] = time();
} else {
throw new Google_Auth_Exception("Error refreshing the OAuth2 token, message: '$body'", $code);
}
}
花了很多时间后,我得到的错误是$request = $this->client->getIo()->makeRequest($http); 的响应代码 400,这是无效的授权。
【问题讨论】:
-
您遇到错误了吗?
-
@DaImTo 不,我没有收到任何错误或输出。
-
@DaImTo 将完整的代码 gistgithub 链接添加到我的问题中。
-
所有与解决问题相关的信息都应该嵌入到 Stack Overflow 上的问题中。此外,您应该真正尝试进一步解释出了什么问题、您期望什么以及您看到什么。
-
@Nick 我已经编辑了我的问题,包含我发现的错误和出现错误的函数,您也可以注意到,我提供了一个指向 gistgithub 的链接。
标签: php wordpress google-app-engine oauth access-token