- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在使用 Laravel 构建一个 Web 应用程序,该应用程序使用 Google 帐户作为登录方法。我已经从 Github 下载了 Google+ PHP API,并编写了一个单例类来访问 Google+ 服务。此类的片段如下所示:
// Returns a client ready to receive an access token.
private static function getClient() {
if (!self::$client) {
self::$client = new Google_Client();
self::$client->setApplicationName(self::$application_name);
self::$client->setClientId(self::$client_id);
self::$client->setClientSecret(self::$client_secret);
self::$client->setAccessType('offline');
// I'm only requesting the plus.login and userinfo.profile scopes.
self::$client->setScopes(self::$scopes);
// RedirectURI = 'postmessage'
self::$client->setRedirectUri(self::$redirect_uri);
}
return self::$client;
}
// Returns a client ready to be used for API calls.
private static function getClient2() {
$c = self::getClient();
// getToken returns the token session variable. This is the full
// JSON encoded token we got after authenticating the code.
$token = self::getToken();
$c->setAccessToken($token);
if ($c->isAccessTokenExpired()) {
// getRefreshToken returns the refresh_token session variable.
// This is a JSON decoded string that only contains
// the refresh_token value.
$refreshToken = self::getRefreshToken();
// This is the line that blows up.
$c->refreshToken($refreshToken);
// This code has never been reached :(
$newToken = $c->getAccessToken();
self::storeToken($newToken);
}
// If the access_token hasn't expired, we can merrily begin using
// the client to construct a Google_Service_Plus object.
return $c;
}
我正在实现混合客户端/服务器流程。用户首次登录时,将调用 JavaScript 回调,发送要进行身份验证的代码。用户已通过身份验证,refresh_token
存储在数据库和当前 session 中,我可以在 access_token
的生命周期内成功进行 API 调用。
一小时后,访问 token 过期。我在 getClient2()
中对此进行了测试,并尝试使用从 session 中检索到的 refresh_token
刷新 access_token
(我已经打印了 session 变量和可以确认它们存在并且是 json_decoded)。然后我得到了漂亮的描述性错误
Error refreshing the OAuth2 token, message: 'invalid_grant'
此时所有依赖于 Google+ 的页面都显示错误页面。除非用户返回到网站主页,否则 JavaScript 会再次开始登录流程,从而允许服务器在另一个小时内获得有效的 access_token
,否则该网站将变得无响应。
如果需要,我可以发布更多单例类,但考虑到我能够在第一个小时内对用户进行身份验证并发出请求,我认为这就是所有相关内容。
类似但没有帮助的问题:
最佳答案
如果您希望使用刷新 token 刷新访问 token ,您可以这样做
$client->refreshToken( $refresh_token );
$_SESSION['token'] = $client->getAccessToken();
如果您尝试刷新您最近授予的刷新 token 以外的内容,您将获得返回的 invalid_grant。
关于php - Google+ 身份验证 : refreshToken() returns invalid_grant error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25300126/
我正在尝试向 Google 联系人 API 验证我的应用程序。我已经完成了 Oauth2 流程的第一步并获得了授权码。我正在尝试将此代码交换为访问 token 和刷新 token ,但是当我尝试从 g
我正在尝试将 Google Plus API 集成到我的网络应用程序中。 我能够通过 Google 进行身份验证并获得代码。当我尝试使用 HttpClient 获取 access_token 时,会出
DocuSign documentation通过易于遵循的授权流程进行代码授予。我能够从初始 GET 请求中获取“代码”到/oath/auth,但是当我在 postman 中尝试时,获取 token
我正在尝试使用我的值设置 config.php,但出现此 fatal error : fatal error :未捕获的异常“Google_AuthException”,消息为“获取 OAuth2 访
我一直在尝试创建一个 access_token对于我的 api。我已经 followed the setup并且正在使用 Postman 测试/创建 token 。我似乎无法通过 invalid_gr
我正在尝试从基于站点的 WebService 调用 Azure 托管 WebAPI。基于站点的服务是 adal-angluar SPA,然后必须调用 Azure 中托管的 REST API。来自 AA
我关注了这个资源:https://REDACTED.b2clogin.com/REDACTED.onmicrosoft.com/B2C_1A_DEMO_CLIENTCREDENTIALSFLOW/oa
我正在使用 Java 运行 Analytics-cmdline-sample 应用程序。我使用的是 Maven 2.2.1,我在 Google Api 控制台中创建了 client_Id 和 clie
我关注了这个资源:https://REDACTED.b2clogin.com/REDACTED.onmicrosoft.com/B2C_1A_DEMO_CLIENTCREDENTIALSFLOW/oa
在尝试使用 Active Directory 进行身份验证以检索访问 token 时,我按照以下步骤操作: 1 - 按照以下说明在 Azure 中创建应用程序(步骤 3): https://githu
我想做什么:我正在将 Spotify SDK 实现到我的 iOS 项目中。我已成功收到 Spotify API 的访问 token ,因为我能够使用所述 API 执行搜索艺术家、搜索歌曲和查看播放列表
当 OAuth2Credential 对象尝试刷新其 access_token 时,有时它会收到 invalid_grant 错误,然后变得无法刷新。我使用的代码基于 Google 的 python
我正在创建一个 API 来包装 google oauth。我正在使用谷歌Python客户端库。 api.py 中的代码 from flask import request, g from ..help
我已经查看了关于此主题的其他问题,它似乎与我的错误不符。运行 Google Sheets APIv4 时出现错误: 引发 HttpAccessTokenRefreshError(error_msg,
最近我一直在为这个问题烦恼。 一些背景 使用oauth2client库来管理用户的 token 。 token 用于定期并发执行各种后台任务。 每次这些任务之一即将为用户运行时,我们都会从存储中获取凭
我正在尝试构建一个访问 Google Analytics API 并提取数据的网络应用程序。但是,我在 OAuth 2.0 授权方面遇到了一些问题。 它允许成功的初始访问,但它很快将我踢出并在我点击刷
我正在尝试使用 Mailchimp 的 OAuth 完成身份验证实现,我的访问 token 请求正在获取“无效授权”错误。 使用 ruby HTTParty gem,我将数据发布到 Mailchi
我创建了自己的网站 (www.luig.us)。我为 SQL 服务器创建了一个基本的 IDE,只教 child SQL,DML。 它要求用户在开始时输入用户名和密码以获得使用服务的 token 。 在
在 https://appleid.apple.com/auth/token 中尝试从 Apple 获取 oAuth token 时,我一直收到 invalid_grant 错误接口(interfac
我在我的 Raspberry PI 上使用 Google Cloud Vision API。当我在我的家庭(首次访问云帐户)网络上使用它时,它工作正常,但如果我从不同的网络访问 API,它会引发 to
我是一名优秀的程序员,十分优秀!