Iphone FBSession的Facebook SDK 3.0权限数组持有错误的权限
使用FacebookSDK3.1,我希望在发送post请求之前确保应用程序具有“发布流” 问题是[FBSession.activeSession.permissions indexOfObject:@“publish_stream”]永远不会返回NSNotFound,即使用户在登录过程中选择“不允许”。这自然会导致问题,因为我假设我有权发送帖子,但它返回HTTP状态代码403,因为我实际上没有所需的权限Iphone FBSession的Facebook SDK 3.0权限数组持有错误的权限,iphone,ios,facebook,sdk,permissions,Iphone,Ios,Facebook,Sdk,Permissions,使用FacebookSDK3.1,我希望在发送post请求之前确保应用程序具有“发布流” 问题是[FBSession.activeSession.permissions indexOfObject:@“publish_stream”]永远不会返回NSNotFound,即使用户在登录过程中选择“不允许”。这自然会导致问题,因为我假设我有权发送帖子,但它返回HTTP状态代码403,因为我实际上没有所需的权限 是错误或是否有其他方法检查活动会话的权限。如果您对/me/permissions进行API调
是错误或是否有其他方法检查活动会话的权限。如果您对
/me/permissions
进行API调用,则当前与您使用的访问令牌关联的所有权限都将返回,如果您对/me/permissions
进行API调用,则当前与该会话关联的所有权限都将返回您正在使用的访问令牌将被返回Facebook确认它是iOS SDK中的一个bug:
该漏洞仍然存在于iOS SDK 3.1中
一种解决方法是按照Igy的建议,使用API调用
/me/permissions
检查权限。Facebook确认这是iOS SDK中的一个bug:
[FBSession.activeSession.permissions indexOfObject:@"publish_stream"] != NSNotFound
该漏洞仍然存在于iOS SDK 3.1中
一种解决方法是使用Igy建议的API调用/me/permissions
检查权限
[FBSession.activeSession.permissions indexOfObject:@"publish_stream"] != NSNotFound
上面的代码不是检查写入权限的正确方法
请尝试以下操作,而不是此操作:
-(BOOL)hasWritePermissions{
NSArray *permissiones = [FBSession activeSession].permissions;
for (NSString *permission in permissiones) {
if ([permission isEqualToString:@"publish_actions"]) {
return YES;
}
}
return NO;
}
上面的代码不是检查写入权限的正确方法
请尝试以下操作,而不是此操作:
-(BOOL)hasWritePermissions{
NSArray *permissiones = [FBSession activeSession].permissions;
for (NSString *permission in permissiones) {
if ([permission isEqualToString:@"publish_actions"]) {
return YES;
}
}
return NO;
}
正如@Zorayr所说的,你可以做如下事情
NSArray *permissions = FBSession.activeSession.permissions;
if ([permissions containsObject:@"publish_actions"]) {
[self performNextTestWithLastPostID:nil];
} else {
...
}
正如@Zorayr所说的,你可以做如下事情
NSArray *permissions = FBSession.activeSession.permissions;
if ([permissions containsObject:@"publish_actions"]) {
[self performNextTestWithLastPostID:nil];
} else {
...
}
在本例中,FBSession.activeSession.permissions返回我请求的权限列表,但在会话启动时未更新。在本例中,FBSession.activeSession.permissions返回我请求的权限列表,但在会话启动时未更新。谢谢,我依赖于/me/permissions的结果,但每次你想发帖子或做其他事情的时候发送和传统的请求是不优雅的。用户可以在允许一次后更改给定的权限。我同意。另一种稍有选择的方法是为#200错误(需要扩展权限)添加一个处理程序,而不是每次都发送/me/permissions请求。也不是很优雅,但这毕竟是一个解决问题的方法。谢谢你,我依赖于/me/permissions的结果,但每次你想发表文章或其他东西时发送和传统请求并不优雅。用户可以在允许一次后更改给定的权限。我同意。另一种稍有选择的方法是为#200错误(需要扩展权限)添加一个处理程序,而不是每次都发送/me/permissions请求。也不是很优雅,但它毕竟是一个bug的解决方法。您可以将其简化为,
[[FBSession activeSession]。权限包含对象:@“发布操作”]
,但问题的根源是权限列表被缓存。您可以将其简化为,[[FBSession activeSession]。权限包含对象:@“发布操作”]
但问题的根源在于权限列表被缓存。