Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android登录google,使用服务器端java_Java_Android_Server - Fatal编程技术网

Android登录google,使用服务器端java

Android登录google,使用服务器端java,java,android,server,Java,Android,Server,我正在使用客户端(android)和服务器端(Java)登录google。在android端,我获得了客户端id和访问令牌,但我需要验证访问令牌并在服务器端获取用户信息,我遵循了此链接,但我无法理解流程。此外,我在上遇到了语法错误“预期令牌上出现语法错误” GoogleIdToken=verifier.verify(idTokenString); idTokenString是从android端获取的字符串令牌 有人能帮我解决这个问题并了解流程吗。 这是我的密码: package com.se

我正在使用客户端(android)和服务器端(Java)登录google。在android端,我获得了客户端id和访问令牌,但我需要验证访问令牌并在服务器端获取用户信息,我遵循了此链接,但我无法理解流程。此外,我在上遇到了语法错误“预期令牌上出现语法错误” GoogleIdToken=verifier.verify(idTokenString); idTokenString是从android端获取的字符串令牌

有人能帮我解决这个问题并了解流程吗。 这是我的密码:

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

   }
  }

在android客户端:

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

        //use this idToken in your server-side verification
    }
}