【问题标题】:I got the error "ErrorReauthorizeFailedReasonSessionClosed" with iOS Facebook SDKiOS Facebook SDK 出现错误“ErrorReauthorizeFailedReasonSessionClosed”
【发布时间】:2015-05-27 09:13:08
【问题描述】:

我在我的 iOS 应用上使用 facebook sdk 来登录和分享故事。

在 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 中获得批准

【问题讨论】:

    标签: ios facebook publish-actions


    【解决方案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

    -(void) 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"]);
    
         }
     }];
    

    【讨论】:

    • FBSDKAccessToken 是 Facebook SDK 4.x 版本吗?我的是 3.18。
    • 是的,它是 4.x :) 你应该更容易使用它
    • @MasterHong 你解决了你的问题还是什么?如果您还需要任何帮助,请告诉我?
    • 我发现我已经拥有了发布权限,但是“requestNewPublishPermissions”方法告诉我没有授予发布权限。所以我只是忽略了它,只是上传了故事,然后它就起作用了。感谢您回复@Omarj
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-05
    • 2013-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多