尝试获取范围 com.google.api.server.spi.config.scope.SingleAuthScopeExpression 的客户端 ID 但失败

Tried and failed to get client id for scope com.google.api.server.spi.config.scope.SingleAuthScopeExpression

在 Google Cloud Endpoints migration timetable, where steps to migrate from other authentication services are described, is written that https://www.googleapis.com/auth/userinfo.email 范围内 弃用 并迁移到 email范围应该被考虑(类比从userinfo.profile范围到profile范围)。

在 Java class Constants 中为我的 @Api服务classes,我改了

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

public static final String EMAIL_SCOPE = "email";

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

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 {
        ...
    }

User user 参数中,引擎插入了一个 null(当然是我授权的)。

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

有人会问,那为什么就让它变成userinfo.email?我一直在寻找其他一些范围,因为偶尔对于某些特定的 google 用户(我不知道他们的具体情况),userinfo.email 不会要么工作。 有人可以帮我吗?谢谢。

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