跨客户端身份Google OAuth Api控制台-Flutter应用

问题描述

我有一个提供Google登录功能的网站。在客户端获得idToken后,将进行服务器端身份验证。

现在,我正在为同一网站制作一个应用程序(在FlutteR中)。在Google Api控制台中,我必须在同一项目下创建新的凭据,并生成新的客户端ID。

我阅读了有关跨客户端身份的信息(链接https://developers.google.com/identity/protocols/oauth2/cross-client-identity)。我想知道如何实现此目的,以便只要求用户批准一次。

我真的需要两个客户ID吗?

解决方法

即使网络应用程序和移动(Flutter)应用程序没有具有相同的客户端ID,这也将起作用。在此处的文档中对此进行了说明:

Google认为,当用户向项目中的任何客户ID授予对特定范围的访问权限时,该授予表示用户对整个应用程序的信任[即,项目中的所有客户]在那个范围内。

您应该创建一个包含多个客户端的项目。您的Web应用程序将是一个,而Flutter应用程序将是另一个。这些将以不同的客户端ID结束,但这没关系。稍后,当用户从Web应用授权(同意)范围时,他们仍将在Flutter应用中进行身份验证,而不必重新授权第二个客户端使用相同的范围。反之亦然-如果用户首先在Flutter应用中授权范围,则他们稍后将不得不在Web应用中进行身份验证,但不必同意该范围。