gmail アカウントで認証に成功した後、userinfo を取得しようとしました (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パラメータとして追加するだけで、何度か試してみましたが、間違っているのでしょうか?
私のリクエストにスコープを追加して、このサービスから正しい応答を得る方法を誰かが助けてくれるか、知っていることを願っています。