2016-06-12 85 views
4

我正嘗試使用Facebook SDK在Android應用程序中使用Facebook登錄。但我遇到了問題IFacebookCallback如何使用facebook SDK Xamarin Android登錄?

protected override void OnCreate (Bundle savedInstanceState) 
{ 
    base.OnCreate (savedInstanceState); 
    FacebookSdk.SdkInitialize (Application.Context); 
    // Create your application here 
    SetContentView(Resource.Layout.LoginLayout); 

    callbackManager = CallbackManagerFactory.Create(); 

    loginButton = FindViewById<LoginButton> (Resource.Id.btnloginbyfacebook); 

    LoginManager.Instance.RegisterCallback (callbackManager, new IFacebookCallback<LoginResult>() 
     { 
     } 
    ); 

    loginButton.SetReadPermissions("user_friends"); 
    loginButton.SetReadPermissions("public_profile"); 
    loginButton.SetReadPermissions("email"); 
    loginButton.SetReadPermissions("user_birthday"); 
} 

我得到這個錯誤:

錯誤非泛型類型IFacebookCallback不能與類型參數一起使用。

回答

1

IFacebookCallback是一個接口。您無法創建接口的實例。您必須實現該接口,然後傳遞到執行LoginManager.Instance.RegisterCallback (callbackManager, new FacebookCallbackImplementation());

實例爲Facebook 4.16.1

class FacebookCallbackImplementation<LoginResult> : Java.Lang.Object, IFacebookCallback where LoginResult : Java.Lang.Object 
{ 
    public void OnSuccess(Java.Lang.Object obj){ 

     if (obj != null) { 
      var loginResult = obj.JavaCast<LoginResult>(); 
      AccessToken accesstoken = loginResult.AccessToken; 
     } 
    } 

    public void OnCancel(){ } 

    public void OnError(FacebookException fbException){ } 
} 

作爲替代你可以在這裏實現IFacebookCallback一個通用的方法。上述4.16.1documentation有利特爾斯變化


對於Facebook版本檢索時AccessToken

這些爲OnSuccess提出的修改:

public void OnSuccess(Java.Lang.Object obj) 
{ 
    if (AccessToken.CurrentAccessToken != null) 
    { 
     var profile = Profile.CurrentProfile; 
    } 
} 

附加說明:OnSuccessProfile後有時仍然是null處理該邊緣案件看看ProfileTrackerwatch配置文件更改。

+1

變量loginResult的getAccessToken()方法不可用。 – Mani

+0

更新了我的答案,請檢查它。 – jzeferino

+0

我沒有看到任何更新!仍然你的代碼包含調用方法getAccessToken(); – Mani

相關問題