2017-07-16 10 views
0

私はクライアント(アンドロイド)とサーバー側(Java)でgoogleを使用してログインしています。アンドロイド側では、クリエンドIDとアクセストークンを取得しましたが、アクセストークンを確認してサーバー側のユーザー情報を取得するには、このリンクhttps://developers.google.com/identity/sign-in/android/backend-authをフォローしていますが、私はflow.Alsoを理解できません。 上の構文エラー "構文エラーが発生しました。" GoogleIdToken idToken = verifier.verify(idTokenString) ; idTokenStringはアンドロイド側から得た文字列トークンです。Androidでログインし、サーバー側のJavaで

誰でもこの問題を解決し、フローを理解する手助けができます。あなたのアンドロイドクライアント側で

package com.secret.secret.utils; 
    import java.io.IOException; 
    import java.util.Collections; 
    import java.util.logging.Logger; 

    import javax.servlet.ServletException; 
    import javax.servlet.http.HttpServletResponse; 

    import org.apache.catalina.Authenticator; 
    import org.apache.catalina.connector.Request; 

    import com.google.api.client.googleapis.auth.oauth2.GoogleIdToken; 
    import com.google.api.client.googleapis.auth.oauth2.GoogleIdToken.Payload; 
    import com.google.api.client.googleapis.auth.oauth2.GoogleIdTokenVerifier; 
    import com.google.api.client.http.HttpTransport; 
    import com.google.api.client.json.JsonFactory; 
    public class GoogleUtil { 


private HttpTransport transport; 

private JsonFactory jsonFactory; 
String clientId="My client Id"; 

GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(transport, jsonFactory) 
     .setAudience(Collections.singletonList(clientId)) 
     // Or, if multiple clients access the backend: 
     //.setAudience(Arrays.asList(CLIENT_ID_1, CLIENT_ID_2, CLIENT_ID_3)) 
     .build(); 

private GoogleIdToken idTokenString; 

    // (Receive idTokenString by HTTPS POST) 

    GoogleIdToken idToken = verifier.verify(idTokenString); 
    if (idToken != null) { 
     Payload payload = idToken.getPayload(); 

     // Print user identifier 
     String userId = payload.getSubject(); 
     System.out.println("User ID: " + userId); 

     // Get profile information from payload 
     String email = payload.getEmail(); 
     boolean emailVerified = Boolean.valueOf(payload.getEmailVerified()); 
     String name = (String) payload.get("name"); 
     String pictureUrl = (String) payload.get("picture"); 
     String locale = (String) payload.get("locale"); 
     String familyName = (String) payload.get("family_name"); 
     String givenName = (String) payload.get("given_name"); 

     // Use or store profile information 
     // ... 

    } else { 
     System.out.println("Invalid ID token."); 
    } 

    } 
    } 

答えて

0

public void handleSigninResult(GoogleSignInResult signInResult){ 
    if (signInResult.isSuccess()){ 
     GoogleSignInAccount account = signInResult.getSignInAccount(); 
     String idToken = account.getIdToken(); 

     //use this idToken in your server-side verification 
    } 
} 
ここに私のコードです
関連する問題