Я получил ошибку "ErrorReauthorizeFailedReasonSessionClosed" с iOS Facebook SDK

Я использую Facebook SDK в своем приложении для iOS, чтобы войти и поделиться историей.

Функция публикации истории на Facebook работала нормально, но сегодня она не работает. Я не знаю, почему это не работает, потому что нет изменений кода, связанных с этой функцией.

Ниже приведен код, который запрашивает разрешение publish_actions.

// Request publish_actions
[FBSession.activeSession requestNewPublishPermissions:[NSArray arrayWithObject:@"publish_actions"]
    defaultAudience:FBSessionDefaultAudienceFriends
    completionHandler:^(FBSession *session, NSError *error) {
        if (!error) {
            if ([FBSession.activeSession.permissions indexOfObject:@"publish_actions"] == NSNotFound) {
            // Permission not granted, tell the user we will not publish
            } else {
            // Permission granted
            }
        } else {
            NSLog(@"DEBUG: error = %@", error);
            // There was an error, handle it
            // See https://developers.facebook.com/docs/ios/errors/
        }
}];

Сообщение об ошибке выглядит следующим образом:

Domain=com.facebook.sdk Code=2 "The operation couldn’t be completed. com.facebook.sdk:ErrorReauthorizeFailedReasonSessionClosed"
UserInfo=0xXXXXXXXXX {
    com.facebook.sdk:ErrorLoginFailedReason=
        com.facebook.sdk:ErrorReauthorizeFailedReasonSessionClosed, 
    NSLocalizedFailureReason=
        com.facebook.sdk:ErrorReauthorizeFailedReasonSessionClosed, 
       com.facebook.sdk:ErrorSessionKey= ... >
}

Если кто-нибудь знает это, пожалуйста, помогите мне.

** Версия Facebook SDK 3.18, и элемент publish_actions уже одобрен на developer.facebook.com.

1 ответ

Решение

Вы можете использовать FBSDKAccessToken

 if ([[FBSDKAccessToken currentAccessToken] hasGranted:@"publish_actions"]) {

            [self doShare];
        } else {
            FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
            [login logInWithPublishPermissions:@[@"publish_actions"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
                if (error) {
                    // Process error
                } else if (result.isCancelled) {
                    // Handle cancellations
                } else {
                    // If you ask for multiple permissions at once, you
                    // should check if specific permissions missing
                    if ([result.grantedPermissions containsObject:@"publish_actions"]) {
                        // Do work

                        [self doShare];

                    }
                }
            }];
        }

где делиться

-(недействительно) doShare{

NSString *url = [NSString stringWithFormat:@"http://example.com/locations/%d",1];
NSDictionary *properties = @{

                             @"your action" :url
                             };
[[[FBSDKGraphRequest alloc]
  initWithGraphPath:@"me/example-staging:something"
  parameters: properties
  HTTPMethod:@"POST"]
 startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
     if (!error) {
         // NSLog(@"Post id:%@", result[@"id"]);

     }
 }];
Другие вопросы по тегам