代码之家  ›  专栏  ›  技术社区  ›  Keith

我怎样才能从这个Android应用程序中获得这个Google登录ID令牌来验证服务器端?

  •  9
  • Keith  · 技术社区  · 7 年前

    我在Android应用程序中通过如下方式获得ID令牌:

    GoogleSignInOptions googleSignInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                    .requestIdToken(getString(R.string.server_client_id))
                    .requestEmail()
                    .build();
    

    在哪里? server_client_id googleAccount.getIdToken()

    $client = new \Google_Client(['client_id' => getenv("GOOGLE_CLIENT_ID")]);
        try {
            $payload = $client->verifyIdToken($this->idToken);
        } catch (\Exception $e){
            throw new BadRequestHttpException($e->getMessage());
        }
        if($payload){
            $this->verifyPayload($payload);
        } else {
            throw new AccessDeniedHttpException("Invalid ID Token");
        }
    

    在哪里? GOOGLE_CLIENT_ID

    我遵循以下指南: https://developers.google.com/identity/sign-in/android/start-integrating .

    在这一页上写着: https://developers.google.com/identity/sign-in/android/backend-auth

    配置Google登录时,调用requestIdToken方法并将其传递给服务器的web客户端ID。

    所以我要用 服务器\客户端\ id 在我的Android应用程序中。是这样吗?

    //指定访问后端的应用程序的客户端ID

    这就是为什么我使用服务器上的ANDROID客户端ID。

    是这样吗?使用对方的Oauth客户端id?或者他们都应该使用Android客户端ID?

    提前谢谢

    2 回复  |  直到 7 年前
        1
  •  4
  •   Keith    7 年前

    好吧,我想出来了。Android应用程序和web服务器都需要使用服务器的密钥。尽管我为应用程序创建了一个客户端ID,使用它的密钥SHA1和所有东西。

        2
  •  1
  •   mate.gvo    7 年前
    1. 作为回应,你会得到一个临时代币
    2. 将令牌发送到API。使用它发出另一个请求(从API到Google),以获得一个长寿命令牌

    重要提示:切勿在应用程序内使用服务器密钥

    推荐文章