当从UserService,OAuthService或Cloud Endpoints Injection请求用户时,App Engine的devserver提供什么用户?App Engine Devserver提供什么用户
0
A
回答
2
部署在一个端点项目这个API类:
import com.google.api.server.spi.Constant;
import com.google.api.server.spi.config.Api;
import com.google.api.server.spi.config.ApiMethod;
import com.google.appengine.api.oauth.OAuthRequestException;
import com.google.appengine.api.oauth.OAuthServiceFactory;
import com.google.appengine.api.users.User;
import com.google.appengine.api.users.UserServiceFactory;
@Api(clientIds = Constant.API_EXPLORER_CLIENT_ID)
public class AuthEndpoints {
@ApiMethod
public User userFromUserService() {
return UserServiceFactory.getUserService().getCurrentUser();
}
@ApiMethod
public User userFromParameter(User user) {
return user;
}
@ApiMethod
public User userFromOAuthService() throws OAuthRequestException {
return OAuthServiceFactory.getOAuthService().getCurrentUser();
}
}
摘要
- OAuthService提供用户id = 0的所有时间
- UserService提供用户id = 185804764220139124118如果认证
- 终端用户注入如果授权,则提供userId = 0,如果不是,则为空
详细
不认证,不OAuth授权
- userFromUserService返回null
- userFromParameter返回null
- userFromOAuthService返回用户id = 0
API资源管理器的OAuth授权(默认凭证)
- userFromService返回null
- userFromParmeter返回用户id = 0
- userFromOAuthService返回用户id = 0
Devserver登录via/_ah/login(默认凭证)
- userFromService返回用户id = 185804764220139124118
- userFromParameter返回用户id = 0(提供的OAuth)
- userFromOAuthService返回用户id = 0
从http状态= 204端点的结果返回空。空是每个docs的正确端点行为。
如果传入的客户端请求没有授权令牌或无效授权令牌,则用户为空。在您的代码中,您需要检查用户是否为空,并根据条件执行以下操作之一: 1.如果用户非空,请执行授权操作。 2.如果用户为空,则抛出OAuthRequestException。 3.或者,如果用户为空,则在需要进行某种未经授权的访问时,对未经授权的客户端访问执行某些操作。
OAuthService docs解释返回用户零是预期的行为。
在本地开发服务器,oauth.getCurrentUser()总是返回一个用户对象与电子邮件设置为“[email protected]”和用户ID设置为0,而不管有效的OAuth请求是否被制成。
两个帐户返回:
{
"email": "[email protected]",
"authDomain": "gmail.com",
"userId": "0",
"nickname": "[email protected]"
}
{
"email": "[email protected]",
"authDomain": "gmail.com",
"userId": "185804764220139124118",
"nickname": "[email protected]"
}
这些测试使用AppEngine上,Maven的插件运行:21年9月1日:devserver
结论
- 不要指望您的用户登录名(受web.xml保护)与通过终端节点的OAuth生成相同的用户。
- 使用用户注射,如果你有一个端点可以提供即使不提供身份验证的有效响应
- 你不能依靠OAuthService,表示如果提供(开发服务器上)
我回答了我自己的问题,但我会问为什么它需要这个混淆?
0
它们返回与当前登录用户对应的用户对象。
我没有用户登录,他们将返回null
您可以将用户重定向通过重定向到URL由UserService.createLoginUrl()
这工作在生产和开发服务器相同retured到登录页面。唯一的区别是dev服务器不验证用户凭证。它仅要求电子邮件,不需要密码。
相关问题
- 1. App Engine数据存储 - devserver限制
- 2. App Engine SDK DevServer只读模式?
- 3. 从Google App Engine提供多个端口
- 4. 为什么“不”Google App Engine?
- 5. Google App Engine为Java应用程序到客户端的实时数据传输提供了什么?
- 6. App Engine devserver查询过滤器不工作
- 7. Google App Engine Maven插件:无法启动devserver
- 8. Google App Engine Java与mvn devserver失败:缺少“guestbook/target/guestbook-1.0-SNAPSHOT”
- 9. Google App Engine用户代理
- 10. App Engine的查询用户
- 11. Google App Engine用户API
- 12. Google App Engine:查询用户?
- 13. 使用Google App Engine和瓶子提供静态HTML
- 14. 使用App Engine django补丁提供简单图像?
- 15. 是否使用Google App Engine提供图片?
- 16. 如何使用Google App Engine为AJAX请求提供gzip内容?
- 17. 谷歌App Engine的留言应用程序提供错误
- 18. Google App Engine for Java,什么是.Net?
- 19. 什么是Google App Engine实例?
- 20. Google App Engine - 从App Engine Helper升级
- 21. App Engine超时错误:使用存储在App Engine上的图像提供第三方API
- 22. 为用户提供
- 23. 如何在Google App Engine上提供源文件夹?
- 24. 在App Engine上添加安全提供程序时发生AccessControlException
- 25. Google App Engine无法提供一些mp4文件
- 26. 创建一个通过Google App Engine提供的tar文件
- 27. 如何只在Google App Engine上提供静态文件?
- 28. Google App Engine:如何从RequestHandler提供静态文件?
- 29. 通过Eclipse插件提供的Google App Engine 1.6?
- 30. App Engine的ORM不支持多父键提供商领域