我在这里使用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" });
答案 0 :(得分:3)
好的,所以我自己找到了答案。问题出在facebook开发者应用程序设置中,iOS Bundle ID与monodevelop标识符中的不一样:)
答案 1 :(得分:0)
此功能是开发人员的意图。首先,我不明白为什么你不想要这个,其次这是一个开源库。您可以浏览代码并找到构成它的代码片段。然后将其更改为您想要的。我现在正在这个库中搜索这个。只要我得到了答案我就回复了。但我的猜测是他们使用了UIApplication.SharedApplication。*来打开Facebook应用程序(如果有的话)。
真诚的,你的, Peyman Mortazavi
答案 2 :(得分:0)
FWIW:如果您在沙盒中并尝试使用真实用户登录,则会收到相同的错误。