在使用 gmail 帐户成功进行身份验证后,我尝试获取用户信息(tok 是有效令牌):
GoogleCredential credential2 = new GoogleCredential.Builder()
.setTransport(TRANSPORT).setJsonFactory(JSON_FACTORY)
.setClientSecrets(CLIENT_ID, CLIENT_SECRET)
.setRequestInitializer((new HttpRequestInitializer() {
@Override
public void initialize(HttpRequest request)
throws IOException {
request.getHeaders().setAuthorization("Bearer ".concat(tok));
}
}))
.build();
Oauth2 userInfoService = new Oauth2.Builder(TRANSPORT,
JSON_FACTORY, credential2.getRequestInitializer())
.setApplicationName(APPLICATION_NAME).build();
Userinfo userInfo = userInfoService.userinfo().get().execute();
logger.warn("User email: {}", userInfo.getEmail());
logger.warn("User gender: {}", userInfo.getGender());
logger.warn("User complet name: {} - {}", userInfo.getFamilyName(), userInfo.getName());
但日志显示所有字段为“null”,返回的 json 数据仅包含 id:
{
"id": "113695880661351193041"
}
我该怎么办?添加一个特殊的范围来做到这一点?我尝试了几次都没有成功,只是添加了 scope= https://www.googleapis.com/auth/userinfo.profile作为 url 参数,也许这是错误的?
希望有人可以帮助或知道如何为我的请求添加范围并从该服务中获得正确的响应。