android - 意味 - webview facebook ログイン



ダイアログを介してWebViewでGoogleウェブサイト上のユーザーを認証する (1)

パート1:Google Plus Services APIの使用

私があなたの質問を正しく理解したならば、あなたはあなたがしようとしていることをグーグルプラスサービスAPIを使って達成することができるかもしれません。

GoogleApiClientを作成してGoogleApiClient 、これらのサインインオプションを使用してGoogleApiClientを作成します。 そこから、あなたのパラメータとしてあなたのAuth.GoogleSignInApi.getSignInIntentと共にAuth.GoogleSignInApi.getSignInIntentを使用します。

この目的は、Googleアカウントピッカーを提示するSignInIntentを起動する必要があります(これには、以前にデバイスでアクセスされたアカウント、および別のアカウントを追加する機能が含まれます)。

GoogleSignInResultに戻ったら、ユーザーが認証されたことを確認し、それ以外の場合と同様に認証フローを作成します。

Android SDKにはGoogle SignInButtonも含まれています。これは、サインイン用のカスタムボタンを作成しなくても、レイアウト内でそのまま使用できます。

パートII:WebViewClientの使い方

今、あなたがそれらを認証するためにWebViewを使用しようとしているならば、あなたの最善のWebViewClientWebViewClientクラスを拡張することWebViewClient

必要なもの: clientIdclientSecret 、およびclientScope (これらのすべての詳細は、Google Developer Consoleでアプリケーションを作成するときに提供されます)

まず最初に、承認するURLはおそらく次のようになりますhttps://accounts.google.com/o/oauth2/auth?response_type=code&clientId={your client id}&state={SOMESTATEINFO}&access_type=offline : https://accounts.google.com/o/oauth2/auth?response_type=code&clientId={your client id}&state={SOMESTATEINFO}&access_type=offline (アクセスタイプオフラインアクセスが必要な場合) これはあなたのWebView初期URLであるべきです

次に、拡張されたWebViewClientクラスを修正します。 あなたがやりたいことはあなたのredirectURLshouldOverrideUrlLoading(WebView webView, String url)するためにshouldOverrideUrlLoading(WebView webView, String url)メソッドをオーバーライドすることです。 おそらく最も簡単な方法は、これを検出するためにurl.startsWith(<your redirect URL>)を使用することです。 その後、応答を解析できます。 あなたの応答にerrorが含まれている場合、それは何かがうまくいかなかったことを意味します。 それ以外の場合は、URLの2つのフィールド、 codestate取り戻す必要があります。 error返されない場合は、 shouldOverrideUrlLoading trueshouldOverrideUrlLoadingます。

codeを取得したら、クライアント、スコープ、および秘密を使用して、新しいGoogleAuthorizationCodeFlow作成できます。

フローを取得したら、 GoogleTokenResponseが必要になりますGoogleTokenResponse response = flow.newTokenResponse(<code>).setRedirectUri(<redirectUri>).execute()を使用すると、認証コードとして上記で取得したcodeを使用できますGoogleTokenResponse response = flow.newTokenResponse(<code>).setRedirectUri(<redirectUri>).execute()

これを実行してresponseを取得したら、 flow.createAndStoreCredential(response, null)を使用してCredentialを取得できます。

また、このCredentialを使用して、通話を認証できます。

警告他のWebブラウザでサインインしたアカウントをWebViewに認識させることができなかったため、アカウントピッカーにはアプリ固有のWebViewでサインインしたアカウントしか表示されない場合があります。

tl; drこれはWebViewWebViewClient使って行うことができますが、それはWebViewClientで、Google Plus Services APIを使うよりも少し遠回りです。

この例は、認証コードなどを取得した後の認証フロー/資格情報をよりよく示しています。

そして、これもまた役に立つかもしれないWebViewClientに関する若干のドキュメンテーションです。

これがあなたを正しい方向に向けるのに役立つことを願っています!

たとえば、ユーザはWebViewでgoogle.comに移動しています。

手動でWebフォームからログインするのではなく、Googleアカウントピッカー( https://developers.google.com/android/guides/http-auth )で簡単に承認することができますか。 Android Webブラウザ(たとえば、Google Chrome)はこの方法でユーザを認証しています)。





accountpicker