Facebook api与monotouch

时间:2012-03-28 22:02:23

标签: c# facebook binding xamarin.ios

我在这里使用facebook绑定遇到了麻烦(https://github.com/mono/monotouch-bindings/tree/master/facebook),问题是授权(登录)功能在设备上不起作用。在模拟器上它工作得很好,但是从设备而不是webbrowser登录窗口启动官方Facebook应用程序(安装在手机上)。

随着绑定提供的样本发生同样的事情。

任何想法我如何使用浏览器登录(如果我卸载官方的Facebook应用程序,它也可以在设备上正常工作)而不是Facebook应用程序?

我使用的代码:

class SessionDelegate : FBSessionDelegate
{
    AppDelegate container;
    NSAction onLogin;

    public NSAction OnLogin {
        get {
            return this.onLogin;
        }
        set {
            onLogin = value;
        }
    }       

    public SessionDelegate (AppDelegate container)
    {
        this.container = container;
    }

    public override void DidNotLogin (bool cancelled)
    {
        Console.WriteLine("did not login");
        //container.SaveAuthorization ();
        if( OnLogin != null ) OnLogin.Invoke();
    }

    public override void DidLogin ()
    {
        Console.WriteLine("login !");
        container.SaveAuthorization ();
        if( OnLogin != null ) OnLogin.Invoke();
    }

    public override void DidLogout ()
    {
        Console.WriteLine("logout !");
        container.ClearAuthorization();
    }
}

var sessionDelegate = new SessionDelegate (this); 
facebook            = new Facebook (LocalSettings.FacebookAppId, sessionDelegate);
var defaults = NSUserDefaults.StandardUserDefaults;
if (defaults ["FBAccessTokenKey"] != null && defaults ["FBExpirationDateKey"] != null)
{
         facebook.AccessToken    = defaults ["FBAccessTokenKey"] as NSString;
         facebook.ExpirationDate = defaults ["FBExpirationDateKey"] as NSDate;
}

和登录:

facebook.Authorize(new string [] { "email", "publish_stream", "read_friendlists", "user_photos" });         

3 个答案:

答案 0 :(得分:3)

好的,所以我自己找到了答案。问题出在facebook开发者应用程序设置中,iOS Bundle ID与monodevelop标识符中的不一样:)

答案 1 :(得分:0)

此功能是开发人员的意图。首先,我不明白为什么你不想要这个,其次这是一个开源库。您可以浏览代码并找到构成它的代码片段。然后将其更改为您想要的。我现在正在这个库中搜索这个。只要我得到了答案我就回复了。但我的猜测是他们使用了UIApplication.SharedApplication。*来打开Facebook应用程序(如果有的话)。

真诚的,你的, Peyman Mortazavi

答案 2 :(得分:0)

FWIW:如果您在沙盒中并尝试使用真实用户登录,则会收到相同的错误。