如何使用facebook SDK Xamarin Android登录?

问题描述:

我正尝试使用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不能与类型参数一起使用。

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