如何使用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.1
按documentation有利特尔斯变化
对于Facebook版本检索时AccessToken
:
这些为OnSuccess
提出的修改:
public void OnSuccess(Java.Lang.Object obj)
{
if (AccessToken.CurrentAccessToken != null)
{
var profile = Profile.CurrentProfile;
}
}
附加说明:OnSuccess
的Profile
后有时仍然是null
处理该边缘案件看看ProfileTracker
到watch配置文件更改。
变量loginResult的getAccessToken()方法不可用。 – Mani
更新了我的答案,请检查它。 – jzeferino
我没有看到任何更新!仍然你的代码包含调用方法getAccessToken(); – Mani