gpt4 book ai didi

java - UserService.getCurrentUser() 返回 null

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:17:40 26 4
gpt4 key购买 nike

我已经使用 Java 中的 Google OAuth API 实现了 3-legged OAuth。

我的应用程序已在 GAE 上注册。而且,我也成功获得了访问 token 。但是,现在当我创建 UserService 的对象时,即使我登录了 Gmail 以及我的个人域邮件,它在调用 getCurrentUser() 时返回 null !

我的代码是:

import com.google.appengine.api.users.UserService;
import com.google.appengine.api.users.UserServiceFactory;

oauthParameters.setOAuthConsumerKey(CONSUMER_KEY);
oauthParameters.setOAuthConsumerSecret(CONSUMER_SECRET);
oauthParameters.setScope("https://spreadsheets.google.com/feeds/");
oauthParameters.setOAuthType(OAuthParameters.OAuthType.THREE_LEGGED_OAUTH);
oauthParameters.setOAuthToken(request.getSession().getAttribute("oauth_token").toString());
oauthParameters.setOAuthTokenSecret(request.getSession().getAttribute("oauth_token_secret").toString());

UserService userService = UserServiceFactory.getUserService();
out.println("<br/>Get Current User : " + userService.getCurrentUser());

使用用户服务时不需要专门添加任何jar。那么这里的问题是什么?

另外,当我尝试这个时:

out.println(userService.isUserLoggedIn() ? "User is Logged In" : "User is Log Off");

它输出:

User is Log Off

当我同时登录我的个人域和 gmail 时!我认为,如果我退出,这可能应该将我重定向到登录页面。但是,事实并非如此!

此外,根据它给出的 here & 在 systempuntout 中回答,如果我尝试:

OAuthService oauth = OAuthServiceFactory.getOAuthService();
User user = oauth.getCurrentUser();
out.println("<br/>Get Current User : " + user.getNickname());

仍然,它停止了执行! :(

我在 Google App Engine 日志中收到以下错误:

Oauth.requestServlet doGet: null
com.google.appengine.api.oauth.InvalidOAuthParametersException: Unknown
at com.google.appengine.api.oauth.OAuthServiceImpl.makeSyncCall(OAuthServiceImpl.java:73)
at com.google.appengine.api.oauth.OAuthServiceImpl.getGetOAuthUserResponse(OAuthServiceImpl.java:53)
at com.google.appengine.api.oauth.OAuthServiceImpl.getCurrentUser(OAuthServiceImpl.java:28)
at Oauth.accessFeeds.access(accessFeeds.java:60)
at Oauth.requestServlet.processRequest(requestServlet.java:129)
at Oauth.requestServlet.doGet(requestServlet.java:199)

供引用:Using the Users Service对于 API:com.google.appengine.api.oauth , com.google.appengine.api.users

它是 Google OAuth 的(最不可能的)错误吗?

最佳答案

创建发送重定向 URL 是必需的:

response.sendRedirect(userService.createLoginURL(request.getRequestURI()));

这将重定向到谷歌登录页面,然后您将能够获取用户名!

关于java - UserService.getCurrentUser() 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4921523/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com