我试图完成的是用户应该使用我的 Xamarin 表单应用程序登录到谷歌,然后应用程序应该验证用户令牌服务器端。到目前为止,我已经在 Xamarin 中实现了登录,Xamarin.Auth
并且我能够获得这些令牌:
- 访问令牌
- 刷新令牌
- id_token
当我阅读 Azure 函数身份验证的文档时,我应该发出 POST 请求并将 id_token 作为 client_id 提供给正文中的https://mysite.azurewebsites.net/.auth/login/google 作为 JSON。
这导致一个
400 - 无效的客户凭证
来自邮递员。
在 Google APIS/Services 中,我有一个带有两个凭据的应用程序
- 为我的应用开启 Android
- 为我的 Azure 函数启用 Web 应用程序
我按照指南并在我的 Azure 函数中使用 App id 和密码启用了 Google 身份验证。
Xamarin 代码:
public partial class LoginPage : ContentPage
{
public static OAuth2Authenticator Auth;
public AuthenticatorPage AuthPage;
public LoginPage()
{
InitializeComponent();
Auth = new OAuth2Authenticator(
"AndroidGoogleApiIdString.apps.googleusercontent.com",
string.Empty,
"email",
new Uri("https://accounts.google.com/o/oauth2/v2/auth"),
new Uri("com.companyname.AppName:/oauth2redirect"),
new Uri("https://www.googleapis.com/oauth2/v4/token"),
null,
true);
Auth.CreateRequestQueryParameters(new System.Collections.Generic.Dictionary<string, string>()
{
{"requestServerAuthCode", "AzureFunctionGoogleAppIdString.apps.googleusercontent.com" },
{"response_type", "code" }
});
AuthPage = new AuthenticatorPage(Auth);
Auth.Completed += Auth_Completed;
Auth.Error += Auth_Error;
}
...
}