여기에서 페이스 북 바인딩을 사용하는 데 문제가 있으며 (https://github.com/mono/monotouch-bindings/tree/master/facebook) 권한 부여 (로그인) 기능이 기기에서 작동하지 않는다는 문제가 있습니다. 시뮬레이터에서는 완벽하게 작동하지만 웹 브라우저 로그인 창 대신 장치에서 공식 페이스 북 앱 (전화에 설치됨)을 시작합니다.monotouch의 Facebook API가
바인딩과 함께 제공된 샘플에서도 동일한 현상이 발생합니다.
어떤 생각이든 페이스 북 앱 대신 브라우저를 사용하여 로그인 할 수 있습니다 (공식 페이스 북 앱을 제거하면 기기에서도 정상적으로 작동합니다). 내가 사용하는
코드 :
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" });
짐작할 수 있다면, 이것이 그들의 도서관이 의도 한 방식입니다. 당신을 위해 로그인하지 않았습니까? – jonathanpeppers
아니요. 그리고 그것은 내 응용 프로그램에서 FBSessionDelegate의 "DidNotLogin"기능을 호출합니다. – Daniel