android - 如何使用 Facebook SDK Xamarin Android 登录?

标签 android facebook xamarin xamarin.android

我正在尝试使用 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 以处理边缘情况,请查看 ProfileTrackerwatch配置文件更改。

关于android - 如何使用 Facebook SDK Xamarin Android 登录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37771063/

相关文章:

Android - 错误 :String types not allowed (at 'imageViewScramble' with value '' )

android - httpurlconnection 发布空 json

ios - 如何找到 ScrollView 内容偏移 Y 点以使所选文本可见。

c# - 如何使用 Xamarin Android 在编辑文本上实现 TextWatcher 接口(interface)?

android - 替代 Branch.io 来管理深层链接

android - 重新打包 boot.img 时出错 (Android)

android - com.facebook.widget.ProfilePictureView - 错误 : Error parsing XML: unbound prefix

objective-c - iOS 6 上 Facebook 登录失败

android - 错误 :(33, 13) 无法解析 : com. facebook.android :audience-network-sdk:4. +

java - android中通过service实现sip