- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
我发现了一个有趣的问题。
当我请求新的发布权限时,fb sdk 会显示带有“跳过”按钮的对话框。我是这样处理的
[[[appDelegate facebook] session] requestNewPublishPermissions:permissions
defaultAudience:FBSessionDefaultAudienceEveryone
completionHandler:^(FBSession *session, NSError *error)
{
if (!error)
{
//do smth if there is no error
}
}];
但是当用户在对话框中按下“跳过”时 - 错误为零。
如何处理?也许我不明白……谢谢。
最佳答案
我也一样,这似乎是 Facebook SDK 中的错误,但我不确定。我添加了额外检查 session 是否具有新权限。
- (void)postToFacebookWithMessage:(NSString *)message completionBlock:(void (^)(NSError *))completionBlock
{
NSArray *permissions = @[@"publish_actions"];
void (^completionHandler)(FBSession *session, NSError *error) = ^(FBSession *session, NSError *error) {
if (error != nil)
{
if (completionBlock != nil)
{
completionBlock(error);
}
}
else if(![self activeSessionHasPermissions:permissions])
{
NSError *error = [NSError errorWithDomain:@"Facebook" code:FBAccessDisabledCode userInfo:@{NSLocalizedDescriptionKey:NSLocalizedString(@"Facebook access disabled", @"Facebook access disabled")}];
if (completionBlock != nil)
{
completionBlock(error);
}
}
else
{
NSMutableDictionary<FBGraphObject> *action = [FBGraphObject graphObject];
action[@"message"] = message;
[FBRequestConnection startForPostWithGraphPath:@"me/og.posts" graphObject:action completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
// internal error 1611231 means that this was already posted
if (error.code == 5)
{
error = [NSError errorWithDomain:@"Facebook" code:FBDuplicateActionErrorCode userInfo:@{NSLocalizedDescriptionKey:NSLocalizedString(@"Already posted to Facebook", @"Already posted to Facebook")}];
}
if (completionBlock != nil)
{
completionBlock(error);
}
}];
}
};
if ([self activeSessionHasPermissions:permissions])
{
completionHandler([FBSession activeSession], nil);
}
else
{
[[FBSession activeSession] requestNewPublishPermissions:permissions defaultAudience:FBSessionDefaultAudienceEveryone completionHandler:completionHandler];
}
}
- (BOOL)activeSessionHasPermissions:(NSArray *)permissions
{
__block BOOL hasPermissions = YES;
for (NSString *permission in permissions)
{
NSInteger index = [[FBSession activeSession].permissions indexOfObjectPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) {
if ([obj isEqualToString:permission])
{
*stop = YES;
}
return *stop;
}];
if (index == NSNotFound)
{
hasPermissions = NO;
}
}
return hasPermissions;
}
希望对你有帮助
关于ios - FBSession requestNewPublishPermissions如何处理 "Skip"用户操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16571476/
我正在尝试使用 iOS 上的 Facebook SDK 从用户那里获得发帖权限。 我在一个方法中调用下面的代码,如果应用程序没有发布到用户 facebook 墙上所需的发布权限,则会调用该方法。
我关注了 FB tutorial一步一步来,我不明白为什么这不起作用。 我所有的 fragment 都继承自 BaseFragment : public class BaseFragment exte
使用 SDK 3.22.0。 if (FBSession.activeSession.isOpen) { [FBSession.activeSession requestNewPub
我正尝试在我的 Android 应用程序中从我的用户那里获得发布权限,并且我成功了,但是当我获得权限时,我想要一个回调来告诉我这一点。这是我的代码: private void requestPubli
目前我调用requestNewPublishPermissions请求publish_stream权限。 有没有办法让我查看用户是否已经授权该权限,这样我就不需要再次询问了? 我认为 Session.
我正在开发一个与 Facebook 集成的 Android 应用程序。我想: 让用户使用 Facebook 登录 在 Facebook 上获取用户的电子邮件地址(可以是 proxied email a
我正在将 facebook 集成到我的 android 应用程序中,当用户首次登录时,我正在使用我的 requestFacebookPermissions(session) 方法请求 publish_
我在使用 requestNewPublishPermissions 时遇到问题(我使用的是 SDK 3.17 版)。 Facebook 文档说只使用读取权限登录,然后再请求写入权限,这就是我想要做的。
我是一名优秀的程序员,十分优秀!