我正在使用Parse框架进行社会认证。我的应用程序有一个非常简单的方法,可以在Facebook上请求发布许可。
我的问题:我传递给reauthorizeUser的块:永不被调用!
+(void)acquirePublishPermissionsForUser:(DHUser *)user WithCompletion:(void (^) (BOOL succeeded, NSError *error))completion
{
[PFFacebookUtils reauthorizeUser:user
withPublishPermissions:@[@"publish_actions"]
audience:FBSessionDefaultAudienceFriends
block:^(BOOL succeeded, NSError *error) {
completion(succeeded, error);
}];
}这种方法效果很好。在这种情况下,Facebook应用程序打开,并提示许可。一旦点击OK,您将返回到我的应用程序。openURL和applicationDidBecomeActive都会被调用。
这在我的应用程序代表中:
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation {
// Handle Facebook authentication
return [FBAppCall handleOpenURL:url
sourceApplication:sourceApplication
withSession:[PFFacebookUtils session]];
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
// Handle Facebook Authentication
[FBAppCall handleDidBecomeActiveWithSession:[PFFacebookUtils session]];
}我设置了一个断点来验证:我的块从未被执行过。这真的很重要,因为我想在获得许可后再发到Facebook上。否则就有点没用了。
有什么想法吗?
发布于 2014-10-09 20:42:10
最后,我使用了一个直接的FB调用([FBSession activeSession requestNewPublishPermissions])。
它对我的会话和令牌数据做了一些奇怪的工作,但至少会执行回调。肯定不是真正的解决办法,但也行。
https://stackoverflow.com/questions/26240459
复制相似问题