2012-03-28 5 views
4

여기에서 페이스 북 바인딩을 사용하는 데 문제가 있으며 (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" });   
+0

짐작할 수 있다면, 이것이 그들의 도서관이 의도 한 방식입니다. 당신을 위해 로그인하지 않았습니까? – jonathanpeppers

+0

아니요. 그리고 그것은 내 응용 프로그램에서 FBSessionDelegate의 "DidNotLogin"기능을 호출합니다. – Daniel

답변

3

좋아 Peyman Mortazavi, 그래서 나는 대답을 자신을 발견했다. 문제는 페이스 북 개발자 앱 설정에서 발생했습니다. iOS 번들 ID는 단일 개발 식별자와 동일하지 않습니다.

0

이 기능의 의도 개발자입니다. 처음에는 왜 이것을 원하지 않는지 이해하지 못합니다. 두 번째는 오픈 소스 라이브러리입니다. 코드를 살펴보고이를 만드는 코드 조각을 찾을 수 있습니다. 그런 다음 원하는대로 변경하십시오. 나는 지금이 도서관에서 이것을 찾고있다. 내가 대답을 얻는 한 나는 그것을 회신한다. 하지만 내 생각 엔 UIApplication.SharedApplication. *을 사용하여 Facebook 앱을 사용할 수있는 경우이를 열어 놓은 것입니다.

는 진심으로 당신,

+0

작동한다면 페이스 북 앱에 아무런 문제가 없었지만 그렇지는 않습니다. 그것은 내 응용 프로그램에서 FBSessionDelegate에서 "DidNotLogin"함수를 호출합니다. – Daniel

+0

몇 가지 코드를 게시 할 수 있습니까? – jonathanpeppers

+0

오케이, 코드를 추가했습니다. 그러나 문제는 내 코드에 없다는 것을 확신합니다. – Daniel

0

FWIW : 샌드 박스에있는 경우 같은 오류가 발생합니다. 실제 사용자와 로그온.

관련 문제