2017-05-24 18 views
1

私はアンドロイドxamarinに新しいです。私はアイデンティティプロバイダとしてGoogleとxamarin androidでOAuthを実装しようとしています。私はグーグルで私のアプリを登録し、以下のようにユーザーがログインボタンをクリックしたときに使用しているクライアントIDとクライアントシークレットを得ました。アンドロイドのOAuth 403エラーxamarin - disallowed_useragent

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); 
    } 

Googleにリダイレクトされますが、403エラーは「disallowed_useragent」と表示されます。 thisによると、私は
chromecustomtabs必要が使用することを知るようになり、いくつかのフォーラムを通過した後

を「ウェブビューとして知られている組み込みのブラウザでGoogleにOAuthの要求を許可もはや」グーグルないと質問をStackOverflowの。

だからここに私は2つの質問

  1. を持ってchromecustomtabsへの代替解決策はありますか?

  2. 上記の答えがノーであれば、私が正しく理解していれば、その後、私は私のプロジェクトのコードの下に追加する必要があります。私の質問は、どのような変更をOnLoginClicked関数で行う必要がありますか?その場合、OAuth2Authenticatorが必要ですか?

マイコード:

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

任意の提案/リンクいただければ幸いです。ありがとう。

答えて

0

これはあなたのセクションの質問への答えです:

isUsingNativeUI呼ばOAuth2Authenticator上のパラメータがあります。それをtrueに設定する必要があります。これにより、Xamarin.AuthはWebviewではなくAndroid内でCustomTabsサービスを使用します。

あなたのコードは次のようになります。

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 

私はそれがデフォルトだったらいいのに。

+0

>それがデフォルトだったらいいのに。 これからの予定です。問題は、GoogleがネイティブUIを必要とするプロバイダだけで、他のプロバイダをセットアップできることですが、これは必須ではありません。 互換性の理由から、デフォルトではfalseです(下位互換性)。しばらくお待ちください。 – moljac

関連する問題