2011-03-05 51 views
0

我想通過FBConnect最新的SDK提取用戶的基本信息。我的代碼很簡單:用Facebook Graph API提取用戶信息時出現身份驗證錯誤

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    facebook = [[Facebook alloc] initWithAppId:fbAppId]; 
    NSArray* permissions = [[NSArray arrayWithObjects:@"user_about_me",@"read_stream",nil]retain]; 
    [facebook authorize:permissions delegate:self];  

    [facebook requestWithGraphPath:@"me" andDelegate:self];  
    NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys: 
            fbAppId, @"app_id", 
            [NSString stringWithFormat: @"Some Text"], @"description", 
            @"My Test App", @"name", 
            @"Test Facebook Graph API",@"message", 
            nil]; 

    [facebook dialog:@"feed" andParams:params andDelegate:self]; 
} 
- (BOOL) application: (UIApplication*) application handleOpenURL:(NSURL *)url { 
    return [facebook handleOpenURL:url]; 
} 
- (void) fbDidLogin { 
NSLog(@"FB didLogin"); 
} 
- (void) fbDidNotLogin:(BOOL)cancelled { 
NSLog(@"FB didNotLogin"); 
} 
- (void) request:(FBRequest *)request didLoad:(id)result { 
    NSLog(@"request-didLoad-result"); 
} 
- (void)request:(FBRequest *)request didReceiveResponse:(NSURLResponse *)response { 
    NSLog(@"received response"); 
} 

到目前爲止,一切都很順利。在用戶的牆上發佈feed feed對話框可以正常工作。

[facebook requestWithGraphPath:@"me" andDelegate:self]; 

但無論fbDidLogin也不requestDidLoad叫:當我試圖讓用戶的信息,如姓名與出現問題。對於requestDidLoad,我檢查didLoadRawResponse因爲它要求didLoad之前調用:

- (void)request:(FBRequest *)request didLoadRawResponse:(NSData*)data { 

    NSString *response = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; 
    NSLog(@"Response is = %@",response); 
    [response release]; 
} 

我所得到的響應是以下驗證錯誤:

{"error":{"type":"OAuthException","message":"An active access token must be used to query information about the current user."}} 

是什麼原因和解決辦法嗎?

+0

如果fbDidLogin沒有被調用,你可以請檢查這是否被稱爲fbDidNotLogin,我希望你有正確的值「fbAppId」 – Yogesh 2011-03-06 01:43:23

+0

@Yogesh:不,即使fbDidNotLogin沒有被調用。我想這是因爲新SDK將控制權暫時轉移到Facebook應用程序或Safari,無論哪一個都可用。它檢測用戶是否已經登錄或以其他方式要求登錄。我已經檢查了兩種情況。是的,fbAppId也是正確的。正如我所說我可以在牆上張貼。剩下的唯一問題是在提取用戶信息時進行授權。 – WaJiyaz 2011-03-06 10:26:15

+0

有趣,所以當你可以張貼到牆上沒有授權問題,但當你試圖提取用戶信息。對不起,我無法幫助,除非我查閱整個代碼。還有一個建議可能是你可以刪除你的模擬器中的應用程序,並嘗試再次驗證,看看是否可以解決問題 – Yogesh 2011-03-07 02:36:00

回答

3

我增加了我的整個代碼在以下維基 How to retrieve Facebook response using Facebook iOS SDK

希望這會幫助你,這是一個工作代碼,如果你有任何問題,請讓我知道。

+0

非常感謝Yogesh。當然它有幫助。還有什麼比整個代碼更清晰。因此,總結一下,新的單點登錄功能無法完成。必須實現手動登錄才能訪問。再次感謝:) – WaJiyaz 2011-03-08 14:25:53

+0

你是最受歡迎的。 – Yogesh 2011-03-08 14:55:50

相關問題