2017-06-13 57 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,所以我將不得不嘗試使用本地頁面實現您的解決方案。我希望它能起作用。 –