我想通過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."}}
是什麼原因和解決辦法嗎?
如果fbDidLogin沒有被調用,你可以請檢查這是否被稱爲fbDidNotLogin,我希望你有正確的值「fbAppId」 – Yogesh 2011-03-06 01:43:23
@Yogesh:不,即使fbDidNotLogin沒有被調用。我想這是因爲新SDK將控制權暫時轉移到Facebook應用程序或Safari,無論哪一個都可用。它檢測用戶是否已經登錄或以其他方式要求登錄。我已經檢查了兩種情況。是的,fbAppId也是正確的。正如我所說我可以在牆上張貼。剩下的唯一問題是在提取用戶信息時進行授權。 – WaJiyaz 2011-03-06 10:26:15
有趣,所以當你可以張貼到牆上沒有授權問題,但當你試圖提取用戶信息。對不起,我無法幫助,除非我查閱整個代碼。還有一個建議可能是你可以刪除你的模擬器中的應用程序,並嘗試再次驗證,看看是否可以解決問題 – Yogesh 2011-03-07 02:36:00