未经身份验证的调用Endpoint为具有身份验证的API方法工作

时间:2014-03-08 14:42:49

标签: google-app-engine oauth-2.0 endpoints

我遇到了端点身份验证问题。

这是我正在使用的api代码

@ApiMethod(name = "myapiname.myapimethod", scopes = { Constants.EMAIL_SCOPE }, clientIds = {
        Constants.WEB_CLIENT_ID, Constants.ANDROID_CLIENT_ID,
        Constants.API_EXPLORER_CLIENT_ID }, audiences = { Constants.ANDROID_AUDIENCE })
public Result myapimethod(User user) throws OAuthRequestException, IOException {

    // some work

    return new Result();
}

在API资源管理器中,它显示该方法需要授权,但即使未在API资源管理器中授权请求,它也会成功执行。

任何帮助都将受到高度赞赏。

提前致谢。

1 个答案:

答案 0 :(得分:0)

单独添加User参数不会检查端点请求是否经过身份验证,我们需要检查自己是否参考了文档https://developers.google.com/appengine/docs/java/endpoints/auth#Java_Adding_a_user_parameter_to_methods_for_auth

`如果传入的客户端请求没有授权令牌或无效令牌,则用户为空。在您的代码中,您需要检查用户是否为null并执行以下操作之一,具体取决于条件:

  • 如果用户在场,请执行授权操作。

  • 如果用户为null,则抛出OAuthRequestException。

  • 或者,如果用户为空,如果需要某种未经授权的访问,请对未经授权的客户端访问执行某些操作。