FBSDKShareDialog отменяет, когда он должен опубликовать
Я создаю FBSDKShareDialog в коде
- (void)shareWithFacebookDialog;
{
FBSDKShareLinkContent* content = [[FBSDKShareLinkContent alloc] init];
content.contentURL = [NSURL URLWithString:@"Path Redacted"];
content.contentTitle = @"Title Redacted";
content.contentDescription = @"Description Redacted";
FBSDKShareDialog* dialog = [[FBSDKShareDialog alloc] init];
[dialog setMode:FBSDKShareDialogModeNative];
[dialog setShareContent:content];
[dialog setDelegate:self];
[dialog setFromViewController:self];
[dialog show];
}
Запустится диалог и вся информация верна.
![enter image description here]()
Но как только сообщение постучится, диалог закрывается и вызывается делегат отмены.
- (void)sharerDidCancel:(id<FBSDKSharing>)sharer;
Кто-нибудь видел это? Найден способ преодолеть это?
Ответы
Ответ 1
замените свой код на
- (void)shareWithFacebookDialog;
{
FBSDKShareLinkContent content = [[FBSDKShareLinkContent alloc]init];
content.contentURL = [NSURL URLWithString:@"https://www.google.com"];
content.contentTitle = @"ContentTitle";
content.contentDescription = @"ContentDescription";
[FBSDKShareDialog showFromViewController:self
withContent:content
delegate:self];
}
скажите мне, работает ли он.
Ответ 2
Это случилось со мной, когда я попытался вызвать метод сразу после входа в систему.
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login logInWithPublishPermissions:@[@"publish_actions"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
if (error || result.isCancelled) {
} else {
[self shareWithFacebookDialog];
}
}];
Он работает, если я просто вызываю его без входа в систему (должен иметь уже действующий токен).
if ([FBSDKAccessToken currentAccessToken]) {
[self shareWithFacebookDialog];
}
Ответ 3
У меня была та же проблема: Facebook SDK share всегда возвращает sharerDidCancel
Моя ошибка была в методе AppDelegate:
вот ссылка с решением http://jitu1990.blogspot.it/2015/05/share-with-facebook-from-ios-app.html
И вот код
- (BOOL)application:(UIApplication *)application openURL:(NSURL* )url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [[FBSDKApplicationDelegate sharedInstance] application:application
openURL:url sourceApplication:sourceApplication annotation:annotation];
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
[FBSDKAppEvents activateApp];
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
return [ [FBSDKApplicationDelegate sharedInstance] application :application
didFinishLaunchingWithOptions:launchOptions]
}
Ответ 4
Для Facebook SDK v4.5 + попробуйте следующее:
Objective-C
FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc] init];
content.contentURL = [NSURL URLWithString:@"http://developers.facebook.com"];
[FBSDKShareDialog showFromViewController:self withContent:content delegate:self];
Свифта
let content = FBSDKShareLinkContent()
content.contentURL = URL(string: "http://developers.facebook.com")
FBSDKShareDialog.show(from: self, with: content, delegate: self)