我正在尝试使用 Facebook SDK 在 Android 应用程序中登录 Facebook。但是我遇到了 IFacebookCallback
的问题。
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
是一个接口(interface)。您不能创建接口(interface)的实例。您必须实现该接口(interface),然后传递给 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
的 facebook 版本,根据 documentation检索 AccessToken
时几乎没有变化:
这些是 OnSuccess
中提议的更改:
public void OnSuccess(Java.Lang.Object obj)
{
if (AccessToken.CurrentAccessToken != null)
{
var profile = Profile.CurrentProfile;
}
}
附加说明:有时在 OnSuccess
之后,Profile
仍然是 null
以处理边缘情况,请查看 ProfileTracker
到 watch配置文件更改。
关于android - 如何使用 Facebook SDK Xamarin Android 登录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37771063/