使用谷歌登录UWP和Xamarin.Forms(android)版本的应用程序

使用谷歌登录UWP和Xamarin.Forms(android)版本的应用程序,xamarin.forms,uwp,firebase-authentication,google-login,Xamarin.forms,Uwp,Firebase Authentication,Google Login,我已经创建了两个应用程序,一个是Xamarin表单(用于Google Play Store),一个是UWP(桌面和移动)。我想实现一种方式,用户可以通过第三方(最好是谷歌)登录,这样他就可以从两个应用程序中访问自己的数据。我需要一种识别用户的方法 我已经使用Firebase为Xamarin表单应用程序实现了Google登录,该应用程序会为我生成一个用户ID。由于Firebase尚未得到UWP的正式支持,我尝试使用OAuth2登录Google,但在提供的UserInfo中,我看不到一种方法来识别我

我已经创建了两个应用程序,一个是Xamarin表单(用于Google Play Store),一个是UWP(桌面和移动)。我想实现一种方式,用户可以通过第三方(最好是谷歌)登录,这样他就可以从两个应用程序中访问自己的数据。我需要一种识别用户的方法

我已经使用Firebase为Xamarin表单应用程序实现了Google登录,该应用程序会为我生成一个用户ID。由于Firebase尚未得到UWP的正式支持,我尝试使用OAuth2登录Google,但在提供的UserInfo中,我看不到一种方法来识别我可以在这两个应用中使用的用户

下面是我从OAuth2获得的UserInfo的结构

{
  "sub": "somenumber",
  "name": "somename",
  "given_name": "someGivenName",
  "family_name": "someFamilyName",
  "profile": "https://plus.google.com/somenumber",
  "picture": "https://lh4.googleusercontent.com/-someURL.jpg",
  "gender": "someGender",
  "locale": "someCountry"
}
使用“sub”属性可能不太好,因为用户可以更改它,谷歌将放弃G+。其他帐户值(如用户名)也是如此

为了成功识别两个应用中的用户,我可以使用什么方法

编辑:
使用Firebase登录Google会给我用户的电子邮件地址(该地址是唯一的,不会更改)。因此,我的挑战似乎是找到一种方法,在UWP中使用google帐户登录后获取用户的电子邮件地址。我找到的所有例子都是指即将过时的g+api。

我认为我已经找到了一个很好的解决方案,也可以帮助处于相同情况的其他人:

因此,如果您希望使用第三方登录,并且您在所有平台上都没有相同的支持(即Firebase登录和UWP),那么关于用户的唯一唯一信息是电子邮件地址,它是唯一的,将来不会更改,也不依赖于您使用的服务器。可用于识别用户的

让我们选择谷歌作为第三方登录:

对于Xamarin表单,与Xamarin.Android相比,第三方登录文档非常稀少,但我发现了一个非常好的教程。是的,它是用西班牙语写的,但谷歌浏览器会翻译得恰到好处。要获取电子邮件而不是生成的Id,只需替换

MessagingCenter.Send(FirebaseAuthService.KEY_AUTH, FirebaseAuthService.KEY_AUTH, sg.IdToken);

确保您阅读了“使用您自己的凭据”段落中的所有说明-您必须在清单的协议方案中更改捆绑包id

现在,使用UWP获取谷歌电子邮件地址:

同样,文档非常稀少。您需要从下载.Net的Oauth2示例。然后,在OAuthUniversalApp中,在发出第一个请求时,指定scope=email,如下所示:

 string authorizationRequest = string.Format("{0}?response_type=code&scope=email%20profile&redirect_uri={1}&client_id={2}&state={3}&code_challenge={4}&code_challenge_method={5}",
                authorizationEndpoint,
                System.Uri.EscapeDataString(redirectURI), 
                clientID,
                state,
                code_challenge,
                code_challenge_method);

现在两个平台都有谷歌电子邮件,用户可以使用Android设备或Windows PC登录谷歌。另一件重要的事情是向用户公开您将有权访问电子邮件,如果您选择存储电子邮件,则使用加密算法,以避免安全问题。

我认为我已经找到了一个很好的解决方案,也可以帮助处于相同情况下的其他人:

因此,如果您希望使用第三方登录,并且您在所有平台上都没有相同的支持(即Firebase登录和UWP),那么关于用户的唯一唯一信息是电子邮件地址,它是唯一的,将来不会更改,也不依赖于您使用的服务器。可用于识别用户的

让我们选择谷歌作为第三方登录:

对于Xamarin表单,与Xamarin.Android相比,第三方登录文档非常稀少,但我发现了一个非常好的教程。是的,它是用西班牙语写的,但谷歌浏览器会翻译得恰到好处。要获取电子邮件而不是生成的Id,只需替换

MessagingCenter.Send(FirebaseAuthService.KEY_AUTH, FirebaseAuthService.KEY_AUTH, sg.IdToken);

确保您阅读了“使用您自己的凭据”段落中的所有说明-您必须在清单的协议方案中更改捆绑包id

现在,使用UWP获取谷歌电子邮件地址:

同样,文档非常稀少。您需要从下载.Net的Oauth2示例。然后,在OAuthUniversalApp中,在发出第一个请求时,指定scope=email,如下所示:

 string authorizationRequest = string.Format("{0}?response_type=code&scope=email%20profile&redirect_uri={1}&client_id={2}&state={3}&code_challenge={4}&code_challenge_method={5}",
                authorizationEndpoint,
                System.Uri.EscapeDataString(redirectURI), 
                clientID,
                state,
                code_challenge,
                code_challenge_method);

现在两个平台都有谷歌电子邮件,用户可以使用Android设备或Windows PC登录谷歌。另一件重要的事情是向用户公开您将有权访问电子邮件,如果您选择存储电子邮件,则使用加密算法以避免安全问题。

您可以在哪里将xamarin.forms应用程序连接到firebase auth和google?我只能用邮件和密码来完成,你可以将xamarin.forms应用程序连接到firebase auth和google吗?我只能用邮件和密码