0

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パラメータとして追加するだけで、何度か試してみましたが、間違っているのでしょうか?

私のリクエストにスコープを追加して、このサービスから正しい応答を得る方法を誰かが助けてくれるか、知っていることを願っています。

4

1 に答える 1