当用户之前登录 Facebook 时,共享照片不起作用
Posted
技术标签:
【中文标题】当用户之前登录 Facebook 时,共享照片不起作用【英文标题】:Share photos not works when user is previously logged Facebook 【发布时间】:2016-04-08 19:48:55 【问题描述】:我有这个逻辑
if ([[FBSDKAccessToken currentAccessToken] hasGranted:@"publish_actions"])
NSLog(@"has granted!");
[self sharePhotoWithFBSDK:title andImage:image]; //for logged users
else
FBSDKLoginManager *loginManager = [[FBSDKLoginManager alloc] init];
[loginManager logInWithPublishPermissions:@[@"publish_actions"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error)
NSLog(@"response logInWithPublishPermissions!!! %@",error);
if (!error)
[self sharePhotoWithFBSDK:title andImage:image]; //Non logged users
];
- (void)sharePhotoWithFBSDK:(NSString *)title andImage:(UIImage *)image
FBSDKSharePhoto *sharePhoto = [[FBSDKSharePhoto alloc] init];
sharePhoto.caption = title;
sharePhoto.image = image;
FBSDKSharePhotoContent *content = [[FBSDKSharePhotoContent alloc] init];
content.photos = @[sharePhoto];
[FBSDKShareAPI shareWithContent:content delegate:self];
当用户之前登录 facebook 时,分享照片的请求会丢失。进入库发现输入这个函数_sharePhotoContent
y就死在这行FBSDKGraphRequestHandler completionHandler = ^ (FBSDKGraphRequestConnection * connection, id result, NSError * error)
我想不出任何合理的原因可能导致这种情况发生。
我只知道,当我尝试对没有会话的用户执行相同操作(对于 else)时效果很好。
【问题讨论】:
【参考方案1】:找到问题了。
我正在将共享逻辑调用到
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND,0), ^
);
所以,需要在主线程中调用
dispatch_async(dispatch_get_main_queue(), ^
[self sharePhotoWithFBSDK:title andImage:image];
);
【讨论】:
以上是关于当用户之前登录 Facebook 时,共享照片不起作用的主要内容,如果未能解决你的问题,请参考以下文章
当 href 参数是变量时,Facebook 共享对话框不起作用