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 コントロール内にリクエストを表示するにはどうすればよいですか?