【发布时间】:2017-05-16 10:21:07
【问题描述】:
我使用 angularJS Oauth 模块 GAuth.checkAuth() 在我的应用程序的客户端登录中获得了有效代码。然后是 GAuth.getToken()。
该代码仅1小时有效,1小时后访问的任何API(如GoogleDocs,Gmail)都失败并需要重新登录。
为了克服这个问题,我尝试将代码发送到服务器以在服务器上获取 AccessCode,以便我可以将相同的请求发送到 GoogleDocs、Gmail 等
GoogleAuthorizationCodeTokenRequest req =
new GoogleAuthorizationCodeTokenRequest(
new NetHttpTransport(),
JacksonFactory.getDefaultInstance(),
"https://www.googleapis.com/oauth2/v4/token",
// "https://accounts.google.com/o/oauth2/token",
"901142925530-21ia7dqnsdsdsndnsnnnfdc9cm2u07.apps.googleusercontent.com",
"6NSvw0efghyuuG8YGOBWPln79n",
authCode,
"http://localhost:8080");
req.setGrantType("authorization_code");
//req.put("refresh_token", authCode);
//req.put("access_type", "offline");
GoogleTokenResponse tokenResponse =
req.execute();
tokenResponse.getAccessToken()
其中 authCode 是我在 GAuth Token 中收到的代码
但通话失败,我得到了回应
400 Bad Request
{
"error" : "invalid_grant",
"error_description" : "Incorrect token type."
}
非常感谢任何帮助!
【问题讨论】:
-
为什么不在客户端使用刷新令牌?
-
我正在阅读 API,它说刷新令牌在客户端不起作用。所以没有花太多时间探索它。在客户端使用它是否可行?可以告诉我步骤吗?
标签: java angularjs google-api google-oauth google-api-js-client