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.");
}
}
}