读取权限后直接请求发布权限 - 适用于 iOS 6 的 Facebook SDK

Posted

技术标签:

【中文标题】读取权限后直接请求发布权限 - 适用于 iOS 6 的 Facebook SDK【英文标题】:Ask for publish permissions directly after read permissions - Facebook SDK for iOS 6 【发布时间】:2013-05-23 15:41:40 【问题描述】:

适用于 ios 6 的 Facebook SDK 要求您在发布权限之前请求读取权限,并强烈建议您仅在上下文中请求发布权限。但是,我没有使用 FB 登录进行登录或任何与读取权限相关的操作,我只是希望人们能够在应用程序中发布行为。

我只想请求读取权限,然后立即在本机权限对话框中请求发布权限。我发现这样做的唯一方法是修改 FBLoginView (这是与应用程序一起打包的登录视图),但我想做我自己的按钮,如果用户登录,则发布到 FB .

这就是我现在的电话

[appDelegate openSessionWithAllowLoginUI:YES];

在委托中调用 this

- (BOOL)openSessionWithAllowLoginUI:(BOOL)allowLoginUI 
NSArray *permissions = [[NSArray alloc] initWithObjects:
                        @"email",
                        @"user_likes",
                        nil];
return [FBSession openActiveSessionWithReadPermissions:permissions
                                          allowLoginUI:allowLoginUI
                                     completionHandler:^(FBSession *session,
                                                         FBSessionState state,
                                                         NSError *error) 
                                         [self sessionStateChanged:session
                                                             state:state
                                                             error:error];
                                     ];

如何修改该函数或在读取权限获得授权后立即调用“openActiveSessionwithPublishPermissions”函数?

【问题讨论】:

请关注link page 以获取 Facebook 上操作的权限列表。你会得到你的答案,祝你好运 【参考方案1】:

您可以在openActiveSessionWithReadPermissionss 完成处理程序中调用openActiveSessionwithPublishPermissions。紧随[self sessionStateChanged:session state:state error:error];

更新:

例如。我已经通过以下方式完成了这项工作:

我在一个用于管理所有 facebook 事务的类中创建了这个方法:

- (void)attemptToConnectToFacebookForFirstTime:(void (^)(bool granted))completion

    ACAccountType *facebookAccountType = [accountStore
                                          accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];

    // Specify App ID and permissions
    NSDictionary *options = @
                              ACFacebookAppIdKey: @"000000000000",
                              ACFacebookPermissionsKey: @[@"email"],
                              ACFacebookAudienceKey: ACFacebookAudienceEveryone
                              ;

    [accountStore requestAccessToAccountsWithType:facebookAccountType
                                          options:options 
                                       completion:^(BOOL granted, NSError *e)
     
         // if you gotta do something here, then do it.
         // and then call the completion

         completion(granted);
     ];

然后创建了这个:

- (void)connectToFacebook:(void (^)(bool granted))completion

    ACAccountType *facebookAccountType = [accountStore
                                          accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];

    // Specify App ID and permissions
    NSDictionary *options = @
                              ACFacebookAppIdKey: @"0000000000000",
                              ACFacebookPermissionsKey: @[@"publish_stream",
                                                          @"publish_actions"],
                              ACFacebookAudienceKey: ACFacebookAudienceEveryone
                              ;

    [accountStore requestAccessToAccountsWithType:facebookAccountType
                                          options:options 
                                       completion:^(BOOL granted, NSError *e)
     
         // do what you gotta do, and call completion
         completion();
     ];

然后这样称呼他们:

[[FacebookManager sharedManager] attemptToConnectToFacebookForFirstTime:^(bool granted)

    if (granted)
    
        [[FacebookManager sharedManager] connectToFacebook:^(bool granted)
        
            // do something
        
    

我的版本没有使用facebook SDK,但思路是一样的。

【讨论】:

我试过了,但它抛出了错误。但是,如果您确信它会起作用,我会再试一次。你过去有没有成功地尝试过这个?这有点像寻找钥匙:您可能以前看过那里,但一旦您意识到它们必须在哪里,您一定会找到它们。

以上是关于读取权限后直接请求发布权限 - 适用于 iOS 6 的 Facebook SDK的主要内容,如果未能解决你的问题,请参考以下文章

Facebook iOS SDK - 打开会话并请求读取权限

Facebook 应用程序请求 user_likes 的权限仅适用于某些用户

适用于 iOS 的 Facebook SDK 的权限

Phonegap iOS 应用程序仅在最小化时才请求权限

flutter ios 照片权限总是返回权限被永久拒绝

iOS 14.5将强制App加入请求追踪用户权限!