pin*_*yid 13 google-app-engine google-cloud-endpoints
我的应用程序使用Oauthed Cloud Endpoints,在生产中运行良好.
我的问题是在本地devserver上,我的用户用户总是被设置为example@example.com,即使我已经通过了通常的身份验证,访问代码等等并且拥有一个有效的authed用户.
我得到那个example@example.com在oauth工作正常之前测试oauth端点是有用的,但是由于我的应用程序工作,我宁愿在那里看到实际的用户.
具体来说,我的端点方法是
@ApiMethod(name = "insertEmp"), etc
public Emp insertEmp(User user, Emp emp) {
System.out.println(user.getEmail()); // (A) log "appengine" email
System.out.println(OAuthServiceFactory.getOAuthService().getCurrentUser().getEmail(); // (B) log authed email
...
Run Code Online (Sandbox Code Playgroud)
部署后,一切正常,(A)和(B)都记录经过身份验证的用户(my.email@gmail.com).
在我的本地devserver上进行测试时,(A)总是记录"example@example.com",即使我已经完成了Oauth序列并拥有一个有效的,经过身份验证的用户,并且(B)记录了my.email@gmail.com.所以我可以进行高保真测试,我需要用户成为真正认证的用户.
所以简单来说,我如何让(A)和(B)相同?
看来是做不到了。我最终通过将以下代码放在我的 Endpoint 方法的顶部来围绕它进行编码。
if ("example@example.com".equalsIgnoreCase(user.getEmail()) {
user = new User(OAuthServiceFactory.getOAuthService().getCurrentUser().getEmail(),"foo");
}
Run Code Online (Sandbox Code Playgroud)
所以现在,即使在开发服务器上,用户电子邮件也与 Oauth 电子邮件匹配。
归档时间: |
|
查看次数: |
2650 次 |
最近记录: |