使用Google使用Xamarin Forms和Xamarin.Auth登录我的应用

时间:2017-10-10 17:24:13

标签: android ios xamarin oauth

我已经在网上搜索试图找到答案,我找到了很多,但没有一个工作。 Google要求身份验证在浏览器中进行,而不是在WebView中进行。我已经为Android实现了这个:

var activity = this.Context as Activity;

var auth = new OAuth2Authenticator(
    clientId: "xxxx.apps.googleusercontent.com",
    scope: "",
    authorizeUrl: new Uri("https://accounts.google.com/o/oauth2/auth"),
    redirectUrl: new Uri("myredirecturi"));
auth.Completed += (sender, eventArgs) => {
    if (eventArgs.IsAuthenticated)
        {
            App.SuccessfulLoginAction.Invoke();
            App.SaveToken(eventArgs.Account.Properties["access_token"]);
        }
};
activity.StartActivity(auth.GetUI(activity));

和iOS一样:

var auth = new OAuth2Authenticator(
    clientId: "xxxx.apps.googleusercontent.com", // your OAuth2 client id
    scope: "",
    authorizeUrl: new Uri("https://accounts.google.com/o/oauth2/auth"),
    redirectUrl: new Uri("myredirecturi"));

auth.Completed += (sender, eventArgs) =>
{
    App.SuccessfulLoginAction.Invoke();

    if (eventArgs.IsAuthenticated)
    {
        App.SaveToken(eventArgs.Account.Properties["access_token"]);
    }
    PresentViewController(auth.GetUI(), true, null);
};

但这正是我不想要它做的事情(打开一个WebView),我找到的每个答案就是这样做的。如何正确地执行此操作以便浏览器打开然后在完成后返回到我的应用程序?

此外,我知道范围指定了我想要做的事情,在这种情况下它只是一个登录,但我还没有找到一个实际放在那里的例子。

任何例子都会非常感激。

1 个答案:

答案 0 :(得分:0)

您需要专门启用本机UI类型的身份验证。因此,请在每个项目的OAuth2Authenticator中添加以下内容:

new OAuth2Authenticator {
    isUsingNativeUI = true
}

另外请确保您使用的是至少1.5.0+版本才能获得此属性。