用Facebook Graph API提取用户信息时出现身份验证错误
问题描述:
我想通过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."}}
是什么原因和解决办法吗?
答
我增加了我的整个代码在以下维基 How to retrieve Facebook response using Facebook iOS SDK
希望这会帮助你,这是一个工作代码,如果你有任何问题,请让我知道。
如果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