2015-03-31 6 views
6

Я пытаюсь настроить обмен Facebook с FBSDK в моем приложении iOS.iOS Facebook SDK MessageDialog error 202

Я читал документацию here, и в настоящее время

[FBSDKShareDialog showFromViewController:self withContent:content delegate:self]; 

работает с объектом контента - FBSDKShareLinkContent.

Однако при попытке использовать подобный метод, как указано для совместного использования Facebook Messenger,

[FBSDKMessageDialog showWithContent:content delegate:self]; 

я получаю аварию. Я поймал ошибку и зарегистрировал ее в одном из методов делегирования, и в ней говорится: «Операция не может быть завершена (ошибка com.facebook.sdk.share 202.) «

Я искал эту конкретную но ничего не обнаружили с той же ошибкой. Вот полный код

FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc] init]; 
content.contentURL = [NSURL URLWithString:kAPPShareLink]; 
content.contentDescription = kAPPShareDescription; 
content.contentTitle = kAPPShareTitle; 

if (buttonIndex == 0) { 
    // Facebook 

    [FBSDKShareDialog showFromViewController:self withContent:content delegate:self]; 
} else if (buttonIndex == 1) { 
    // Facebook Messenger 

    [FBSDKMessageDialog showWithContent:content delegate:self]; 
} 

Прости меня, если я пропускаю что-то очевидное, но, как this documentation читает, я предполагаю, что метод FBSDKMessageDialog showWithContent: будет работать точно так же, как FBSDKShareDialog showFromViewController:, который работает для меня.

  • Я использую последнюю версию XCode с iOS8.
+0

Я не смог воспроизвести ошибку. Какую версию приложения Facebook Messenger вы используете? Вы переключились на приложение Messenger? Facebook SDK включает проект RPSSample, можете ли вы воспроизвести этот проект? – amudi

+0

Только что получил ту же ошибку. Вы решили эту проблему? – demon9733

+0

Не разрешено. Я столкнулся с этим с помощью специальной кнопки, но после этого был изменен на UIActivitySheet – rld001

ответ

1

Примечание: Это больше подходит в качестве комментария, но я не хватает репутации еще, чтобы оставлять комментарии

я получаю ту же ошибку, как Facebook и мессенджер обновляются.

Я проверил свои права с

[[FBSDKAccessToken currentAccessToken] permissions] 

, и я думаю, что у меня есть достаточно:

"contact_email", 
"publish_stream", 
"user_likes", 
"publish_checkins", 
"video_upload", 
"create_note", 
"basic_info", 
"publish_actions", 
"public_profile", 
"photo_upload", 
"status_update", 
email, 
"user_friends", 
"share_item" 

Я попробовал так же, как ОП, а также я пробовал:

FBSDKMessageDialog *messageDialog = [[FBSDKMessageDialog alloc] init]; 
[messageDialog setShareContent:content]; 
messageDialog.delegate = self; 

if ([messageDialog canShow]) { 
    [messageDialog show];   
} 

[messageDialog canShow] возвращает NO и метод делегата s поймать ошибку с ошибкой 202, описанной OP.

Я попытался использовать FBSDKSendButton и, похоже, не работает.

С другой стороны, FBSDKShareDialog работает отлично ...

Я надеюсь, что это помогает решить эту проблему.

6

я должен был войти и затем Post, то есть, как это работает:

FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init]; 


[login logInWithReadPermissions:@[@"email"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) 
{ 

    if (error) 
    { 
    // Process error 
    } 
    else if (result.isCancelled) 
    { 
     // Handle cancellations 
    } 
    else 
    { 
     FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc] init]; 
     content.contentURL = [NSURL URLWithString:@"https://developers.facebook.com/"]; 

     FBSDKMessageDialog *messageDialog = [[FBSDKMessageDialog alloc] init]; 
     messageDialog.delegate = self; 
     [messageDialog setShareContent:content]; 

     if ([messageDialog canShow]) 
     { 
      [messageDialog show]; 
     } 
     else 
     { 
      // Messenger isn't installed. Redirect the person to the App Store. 
      [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"https://itunes.apple.com/en/app/facebook-messenger/id454638411?mt=8"]]; 
     } 

    } 
}]; 

и доля Делегат:

- (void)sharer:(id<FBSDKSharing>)sharer didCompleteWithResults:(NSDictionary *)results 
{ 
    NSLog(@"didCompleteWithResults"); 
} 

- (void)sharer:(id<FBSDKSharing>)sharer didFailWithError:(NSError *)error 
{ 
    NSLog(@"didFailWithError ::: %@" , error); 
} 

- (void)sharerDidCancel:(id<FBSDKSharing>)sharer 
{ 
    NSLog(@"sharerDidCancel"); 
} 

Edit: не

[messageDialog canShow] возвращает NO на iPad, отлично работает на iPhone

Опубликовано вопрос о Facebook Developers forum.

+0

Спасибо за ваш ввод. Я больше не реализую код в своем приложении для тестирования, но если кто-либо еще использует это, пожалуйста, подтвердите, и я дам принятый ответ. – rld001

+0

Я использовал его в одном из моих приложений, но не знаю, делает ли кто-нибудь еще. – aks5686

+0

Мне удалось реализовать его, и он работает до [messageDialog canShow]. Он переходит к другому, но я думаю, это потому, что я запускаю его на Simulator. Можете ли вы уточнить, могу ли я проверить отправку сообщений на симуляторе? В противном случае он отлично работает. – Septronic

1

Это снова всплыло в поиске interweb. В настоящее время, существует простой ответ на ошибку Message dialog is not available с кодом 202:

Facebook's documentation:

Примечание: В настоящее время окно сообщений не поддерживается IPADS.