2017-06-13 44 views
0

我有一个web应用程序,您可以使用Facebook和Google登录。我现在将Webapp打包在本地Xamarin应用程序中(不是表格 - 我应该使用表格吗?)。 如何创建原生Facebooklogin(使用facebook应用程序)而不是在webview中启动facebook?本地Facebook登录到Xamarin WebApp

+0

你怎么打包?使用webview并加载远程网站? – woelliJ

+0

不知道,但可能你将不得不使用Xamarin Facebook SDK – Yupi

+0

是的,在iOS中我使用WKWebView,但我想我将迁移到Forms –

回答

1

如何创建原生Facebooklogin(使用facebook应用程序)而不是在webview内启动facebook?

您可以按照下面的步骤,以Facebook登录功能添加到您的应用程序:

  1. 搜索Xamarin.Facebook.AndroidNugetPackageManager并将其添加到您的Xamarin.Android应用。

  2. 添加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> 
    
  3. 添加facebook_app_idString.xml

    <resources> 
        ... 
        <string name="ApplicationName">YourProjectName</string> 
        <string name="facebook_app_id">1429006317193169</string> 
    </resources> 
    
  4. 在你MainActivity.cs添加像下面MetaDataPermission属性:

    [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 
    { 
        ... 
    } 
    
  5. 添加com.facebook.login.widget.LoginButtonxaml

    <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> 
    
  6. 注册您的活动登录回调:

    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 
        } 
    } 
    
+0

嗨,谢谢你的回答。我使用Xamarin Forms,所以我将不得不尝试使用本地页面实现您的解决方案。我希望它能起作用。 –