如何在devserver上使用Oauth测试Cloud Endpoints

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)相同?

pin*_*yid 4

看来是做不到了。我最终通过将以下代码放在我的 Endpoint 方法的顶部来围绕它进行编码。

if ("example@example.com".equalsIgnoreCase(user.getEmail()) {
    user = new User(OAuthServiceFactory.getOAuthService().getCurrentUser().getEmail(),"foo");
}
Run Code Online (Sandbox Code Playgroud)

所以现在,即使在开发服务器上,用户电子邮件也与 Oauth 电子邮件匹配。

  • 对我不起作用...使用 appengine 1.9.3 并且电子邮件继续相同:example@example.com (3认同)