繁体   English   中英

如何从此Android应用获取此Google登录ID令牌以验证服务器端?

[英]How can I get this Google Login ID Token from this Android app to verify server-side?

我通过这样的方式启动我的Android应用程序中的ID令牌:

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

其中server_client_id是我的SERVER的Oauth客户端ID。 然后我用googleAccount.getIdToken()请求令牌

然后在我的服务器(PHP)上,当我验证令牌时,我验证它是这样的:

$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是我的ANDROID的Oauth客户端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。

因此,为什么我在我的Android应用程序中使用server_client_id 它是否正确?

//指定访问后端的应用程序的CLIENT_ID

这就是我在服务器上使用ANDROID客户端ID的原因。

这是正确的吗? 要使用彼此的Oauth client_id? 或者他们都应该使用Android CLIENT_ID?

提前致谢

好的,我明白了。 Android应用程序和Web服务器都需要使用SERVER的密钥。 即使我使用它的密钥SHA1和所有内容为应用程序创建了客户端ID。

  1. 使用client_id和公钥从应用程序发送授权请求
  2. 作为回复,您将获得临时令牌
  3. 将令牌发送到您的API。 使用它来发出另一个请求(从API到Google),以获得一个长期存在的令牌
  4. 存储长寿命令牌。 使用它来从谷歌,fe用户信息请求数据

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM