xamarin android oauth 403错误 - disallowed_useragent

时间:2017-05-24 11:32:23

标签: c# webview xamarin.android google-oauth

我是xamarin android的新手。我正在尝试使用Google作为身份提供程序在xamarin android中实现OAuth。我已经使用谷歌注册了我的应用程序,并获得了用户点击登录按钮时使用的客户端ID和客户端密码。

void OnLoginClicked(object sender, EventArgs e)
    {
        var authenticator = new OAuth2Authenticator(
            Constants.ClientId,
            Constants.ClientSecret,
            Constants.Scope,
            new Uri(Constants.AuthorizeUrl),
            new Uri(Constants.RedirectUrl),
            new Uri(Constants.AccessTokenUrl));

        authenticator.Completed += OnAuthCompleted;
        authenticator.Error += OnAuthError;

        var presenter = new Xamarin.Auth.Presenters.OAuthLoginPresenter();
        presenter.Login(authenticator);
    }

它重定向到谷歌,但将403错误称为'disallowed_useragent'。 根据{{​​3}},谷歌“不再允许在称为网络浏览量的嵌入式浏览器中向Google提出OAuth请求”

经过一些论坛和stackoverflow问题后,我才知道 需要使用 chromecustomtabs

所以我在这里有两个问题

  1. chromecustomtabs有替代解决方案吗?

  2. 如果上述答案为否,那么如果我理解正确,那么我需要在我的项目中添加以下代码。我的问题是在OnLoginClicked函数中需要进行哪些修改?在这种情况下是否需要OAuth2Authenticator?

  3. 我的代码:

    var mgr = new CustomTabsActivityManager (this);
    mgr.CustomTabsServiceConnected += delegate {
    mgr.LaunchUrl ("http://xamarin.com");
    };
    mgr.BindService ();
    

    任何建议/链接将不胜感激。感谢。

2 个答案:

答案 0 :(得分:0)

请阅读topicXamarin Auth 1.5.0支持CustomTabsIntent。

答案 1 :(得分:0)

这是对您的部分问题的回答:

OAuth2Authenticator上有一个名为isUsingNativeUI的参数。您必须将其设置为true。这将导致Xamarin.Auth在Android中使用CustomTabs服务而不是webview。

您的代码变为:

    var authenticator = new OAuth2Authenticator(
        Constants.ClientId,
        Constants.ClientSecret,
        Constants.Scope,
        new Uri(Constants.AuthorizeUrl),
        new Uri(Constants.RedirectUrl),
        new Uri(Constants.AccessTokenUrl),
        null,
        true); // <--  This is it isUsingNativeUI

我希望这是默认设置。