我正在尝试关注Prabir 关于 Facebook 身份验证的博客文章,并将其改编为基于 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 时,会提示在外部打开浏览器(在 Chrome|Firefox|Opera 选项中打开),而不是通过绑定到 LoginActivity 的视图中定义的 WebView 控件登录。我不知道这里发生了什么,以及为什么会这样。如何在 webview 控件、应用程序本身而不是外部显示请求?