尝试并未能获取范围com.google.api.server.spi.config.scope.SingleAuthScopeExpression的客户端ID

时间:2015-05-20 15:01:41

标签: java javascript oauth-2.0 google-apps google-cloud-endpoints

在Google Cloud Endpoints migration timetable中,描述了从其他身份验证服务迁移的步骤,写入 https://www.googleapis.com/auth/userinfo.email 范围已弃用并且应该考虑迁移到电子邮件范围(类似地从 userinfo.profile 范围到个人资料范围)。

在Java类常量中为我的 @Api 服务类定义了常量,例如 Client ID ,我改变了

public static final String EMAIL_SCOPE = "https://www.googleapis.com/auth/userinfo.email";

public static final String EMAIL_SCOPE = "email";

同样在JavaScript example form google的客户端,我将范围变量更改为

var scopes = 'email';

在Google Developers Console日志中,我遇到以下异常:

com.google.api.server.spi.auth.AppEngineAuthUtils getCurrentUser:
getCurrentUser: AccessToken; Tried and failed to get client id for scope 'com.google.api.server.spi.config.scope.SingleAuthScopeExpression@ed8e89a9'
com.google.appengine.api.oauth.InvalidOAuthParametersException: 
    at com.google.appengine.api.oauth.OAuthServiceImpl.makeSyncCall(OAuthServiceImpl.java:139)

在我的端点方法

@ApiMethod(name = "authorize", httpMethod="get")
    public AppUser authorize(User user) throws NonAuthorizedException {
        ...
    }
用户用户参数中的

引擎插入 null (我当然是授权的)。

即使我将范围更改为个人资料,这也不起作用。它只适用于 localhost ,但我认为,这不是问题。

有人可以问,那你为什么要把它作为 userinfo.email 呢?我正在寻找其他一些范围,因为偶尔会有一些特定的谷歌用户(我不知道他们的具体内容), userinfo.email 也不起作用。 有人能帮帮我吗?感谢。

1 个答案:

答案 0 :(得分:0)

您无需更新范围。即使范围已被弃用,也不会被删除。