2017-04-19 12 views

答えて

1

xamarin.AndroidのGoogleログインボタンをxamarinフォームアプリケーションでレンダリングする方法を教えてください。私たちがxamarin形式のAuth URLを使用せずに達成できる方法はありますか?

あなたの「認証URL」がどの認証方法を示しているかわかりません。

アンドロイドアプリでは、これを達成するためにGoogle SDKを使用できます。 GoogleApiClientを使用してGoogleのサインインをアプリに統合するには、まずXamarin.GooglePlayServices.BasementXamarin.GooglePlayServices.AuthXamarin.GooglePlayServices.IdentityのパッケージをAndroidプロジェクトにインストールする必要があります。この公式の文書:Integrating Google Sign-In into Your Android Appをご覧ください。

あなたがXamarin.Formsを使用しているので、あなたはこのように例えばカスタムサインインボタンを作成することができます、XAMLで

[assembly: ExportRenderer(typeof(MySignInButton), typeof(SignInButtonRenderer))] 

namespace GoogleSignInApp.Droid 
{ 
    public class SignInButtonRenderer : Xamarin.Forms.Platform.Android.ButtonRenderer 
    { 
     protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.Button> e) 
     { 
      base.OnElementChanged(e); 
      if (e.NewElement != null) 
      { 
       if (Control != null) 
       { 
        var gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DefaultSignIn) 
           .RequestEmail() 
           .Build(); 

        var mGoogleApiClient = new GoogleApiClient.Builder((FormsAppCompatActivity)Forms.Context) 
         .EnableAutoManage((FormsAppCompatActivity)Forms.Context, new OnConnectionFailedListener()) 
         .AddApi(Android.Gms.Auth.Api.Auth.GOOGLE_SIGN_IN_API) 
         .Build(); 
        Control.Click += (sender, ee) => 
        { 
         var signInIntent = Android.Gms.Auth.Api.Auth.GoogleSignInApi.GetSignInIntent(mGoogleApiClient); 
         ((FormsAppCompatActivity)Forms.Context).StartActivityForResult(signInIntent, 9001); 
        }; 
       } 
      } 
     } 
    } 

    public class OnConnectionFailedListener : Java.Lang.Object, IOnConnectionFailedListener 
    { 
     public void OnConnectionFailed(ConnectionResult result) 
     { 
      Log.Debug("error", "error"); 
     } 
    } 
} 

あなたをこのような

public class MySignInButton : Button 
{ 
} 

レンダラこのように、このボタンを使用することができます。

<local:MySignInButton Text="Sign In" /> 

を忘れないでくださいアンドロイドプロジェクトのマニフェストに<activity android:name="com.google.android.gms.auth.api.signin.internal.SignInHubActivity" />を追加します。

私はあなたの質問にサインインボタンのレンダリングを依頼するため、カスタムレンダラーを使用しています。ボタンやそのようなものをスタイルする必要があるかもしれません。そうでなければDependencyServiceはこのシナリオ私の考えでは。

あなたのMainActivityのAndroidプロジェクトのOnActivityResultを実装することを忘れないでください。それ以上の質問があれば、コメントを残してください。

+0

ありがとう、私はこれを試してみます.. –

+0

@Grace Feng - 難しく、OnActivityResultで実装するものを見つける。他の人が参照できるようにGithubにサンプルコードを投稿できますか? –

+0

@MobleJoseph、[official doc](https://developers.google.com/identity/sign-in/android/sign-in)をチェックするだけで、Xamarin.Androidにも同様の実装が行われます。 –

関連する問題