0

Facebook 認証に関する Prabir のブログ投稿に従って、Xamarin Android ベースのアプリケーションに適用しようとしています。URL を生成するために次のコードが定義されたログイン ページがあります。

private Uri GenerateLoginUrl(string appId, string extendedPermissions)
{
    var parameters = new Dictionary<String, Object> ();

    parameters.Add("client_id", appId);
    parameters.Add ("redirect_uri", "https://www.facebook.com/connect/login_success.html");
    parameters.Add("response_type", "token");

    parameters.Add("display", "popup");

    if (!string.IsNullOrWhiteSpace(extendedPermissions))
        parameters.Add("scope", extendedPermissions);

    var fb = new FacebookClient();
    return fb.GetLoginUrl(parameters);
}

ビューの作成時に、このメソッドを呼び出して WebView 要素に割り当てます。

var browser = this.FindViewById<WebView>(Resource.Id.LoginView);
Uri url = GenerateLoginUrl("<app id>", "");
browser.LoadUrl (url.ToString ());

ビューでは、次のように定義しています。

<WebView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/LoginView" />

LoadUrl が呼び出されると、LoginActivity に関連付けられたビューで定義された WebView コントロールを介してログインするのではなく、ブラウザーを外部で開く (Chrome | Firefox | Opera オプションで開く) ように求められます。ここで何が起こっているのか、なぜこれが起こっているのかわかりません。外部ではなく、アプリケーション自体内で、webview コントロール内にリクエストを表示するにはどうすればよいですか?

4

1 に答える 1

1

そのため、システムの URL 処理が邪魔になっているようです。あなたがする必要があるのは、WebViewClientに設定することですWebView。これにより、 (デフォルトだと思います)から戻ることができ、要求されたリソースをアプリケーションによってロードできるようになりtrueます。shouldOverrideUrlLoading

具体的にはWebViewClient、ここの関連ドキュメントを参照してください。shouldOverrideUrlLoadingしかし、テイクアウトは

If WebViewClient is not provided, by default WebView will ask Activity Manager to choose the proper handler for the url.

http ベースの URI の場合、最も確実なのはシステム ブラウザです。

于 2013-07-02T05:42:10.930 に答える