0

現在GoogleのゲームAPIを使用しています。クライアントは、ユーザーの認証コードとGPlay IDを送信します。Google Playゲーム:tokenResponseにはアクセストークンが含まれていますが、idTokenはありません

私はこれをGoogleに検証するために送信します。

のclient_idとclient_secretは、Googleから取得したとして、私たちのclient_secretから取り出され、そしてidTokenStringがクライアントにログインしているユーザによって提供される認証コードでいる
var tokenResponse = 
    new GoogleAuthorizationCodeTokenRequest(
    new NetHttpTransport(), 
    JacksonFactory.getDefaultInstance(), 
    "https://www.googleapis.com/oauth2/v4/token", 
    client_id, 
    client_secret, 
    idTokenString, 
    "") 
    .execute() 

(形式:4/XXXXX ...)。

tokenResponseを取得した後、次のコードは問題のないアクセストークンを返します。

しかしながら
var accessToken = tokenResponse.getAccessToken() 

、から取り出されidToken:ヌルと

var idToken = tokenResponse.getIdToken() 

戻ります。そのため、ユーザーのデータを取得しようとすると、アカウントの正当な所有者となります。

var idToken = tokenResponse.parseIdToken() 

はnullpointer例外を返します。

トピックを検索すると、parseIdTokenメソッドが使用されていないと考えられ、その情報を取得するためにaccessTokenだけを使用できると思われるユーザーがいるようです。

しかし、私が見つけたソリューションでは、getIdTokenをすべて使用する必要があります。getIdTokenは、nullで返されます。

私はここで間違っている可能性のあることについて誰かが考えているのですか、ログイン後にユーザーの詳細を取得するための別の方法がありますか?

答えて

0

getIdToken()はベータ版である可能性があります。ドキュメントに記載されているように

からGoogle API Client Library for Java:クラスやメソッドレベルで@Betaが付い

特長は変更される場合があります。それらはメジャーリリースで変更または削除される可能性があります。コードがライブラリである場合(つまり、コントロール外のユーザーのCLASSPATHでコードが使用されている場合)は、ベータ機能を使用しないでください。

回避策として、GoogleSignInAccountのgetIdTokenを使用します。

release notesの更新内容を確認できます。 これが役立つことを願っています。

関連する問題