Android 本机Facebooklogin到Xamarin WebApp
我有一个webapp,你可以使用Facebook和谷歌登录。我现在将Webapp打包在一个原生的Xamarin应用程序中(不是表单-我应该使用表单吗?)。 如何创建本机Facebooklogin(使用facebook应用程序),而不是在webview中启动facebook 如何创建本机Facebooklogin(使用facebook应用程序),而不是在webview中启动facebook 您可以按照以下步骤向应用程序添加facebook登录功能:Android 本机Facebooklogin到Xamarin WebApp,android,ios,facebook,xamarin,web-applications,Android,Ios,Facebook,Xamarin,Web Applications,我有一个webapp,你可以使用Facebook和谷歌登录。我现在将Webapp打包在一个原生的Xamarin应用程序中(不是表单-我应该使用表单吗?)。 如何创建本机Facebooklogin(使用facebook应用程序),而不是在webview中启动facebook 如何创建本机Facebooklogin(使用facebook应用程序),而不是在webview中启动facebook 您可以按照以下步骤向应用程序添加facebook登录功能: 在NugetPackageManager中搜索,
NugetPackageManager
中搜索,并将其添加到您的Xamarin.Android应用程序中com.facebook.FacebookActivity
添加到您的清单中:
<application android:label="YourProjectName">
<activity android:name="com.facebook.FacebookActivity"
android:configChanges=
"keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:label="@string/ApplicationName" />
</application>
元数据
和权限
属性,如下所示:
[assembly:MetaData("com.facebook.sdk.ApplicationId",Value = "@string/facebook_app_id")]
[assembly:Permission(Name = Android.Manifest.Permission.Internet)]
[assembly:Permission(Name = Android.Manifest.Permission.WriteExternalStorage)]
namespace YourProjectName
{
...
}
com.facebook.login.widget.LoginButton
添加到您的xaml
:
<resources>
...
<string name="ApplicationName">YourProjectName</string>
<string name="facebook_app_id">1429006317193169</string>
</resources>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.facebook.login.widget.LoginButton
android:id="@+id/btnLogin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="30dp"
android:layout_marginBottom="30dp" />
</LinearLayout>
public class MainActivity : Activity
{
ICallbackManager callbackManager;
LoginButton btnLogin;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView (Resource.Layout.Main);
callbackManager = CallbackManagerFactory.Create();
btnLogin = FindViewById<LoginButton>(Resource.Id.btnLogin);
LoginManager.Instance.RegisterCallback(callbackManager, new MyCallbackResult());
}
protected override void OnActivityResult(int requestCode, [GeneratedEnum] Result resultCode, Intent data)
{
int code = 0;
if (resultCode == Result.Ok)
{
code = -1;
}
else if (resultCode == Result.FirstUser)
{
code = 1;
}
callbackManager.OnActivityResult(requestCode, code, data);
}
}
public class MyCallbackResult : Java.Lang.Object, IFacebookCallback
{
public void OnCancel()
{
//login cancel callback
}
public void OnError(FacebookException p0)
{
//login error callback
}
public void OnSuccess(Java.Lang.Object p0)
{
//Login success callback
}
}
公共类main活动:活动
{
ICallbackManager callbackManager;
登录按钮;
创建时受保护的覆盖无效(捆绑包)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main);
callbackManager=CallbackManagerFactory.Create();
btnLogin=findviewbyd(Resource.Id.btnLogin);
LoginManager.Instance.RegisterCallback(callbackManager,new MyCallbackResult());
}
受保护的覆盖void OnActivityResult(int请求代码、[GeneratedEnum]结果代码、意图数据)
{
int代码=0;
if(resultCode==Result.Ok)
{
代码=-1;
}
else if(resultCode==Result.FirstUser)
{
代码=1;
}
callbackManager.OnActivityResult(请求代码、代码、数据);
}
}
公共类MyCallbackResult:Java.Lang.Object,IFacebookCallback
{
公开作废
{
//登录取消回调
}
公共无效OnError(FacebookException p0)
{
//登录错误回调
}
成功时的公共void(Java.Lang.Object p0)
{
//登录成功回调
}
}
你是怎么包装的?使用webview并加载远程网站?不确定,但可能必须使用Xamarin Facebook SDK是的,在iOS中我使用WKWebView,但我想我会迁移到表单不确定这是否可行。如果您能够从C#收听javascript事件(例如,点击按钮),并在那里处理它,然后使用Xamarin Facebook SDK登录并将结果传递回您的网站,这是可能的。谢谢您的回答。我使用的是Xamarin表单,因此我必须尝试使用本机页面实现您的解决方案。我希望它能像它应该的那样工作。