ios - 读取权限后直接请求发布权限 - Facebook SDK for iOS 6

标签 ios objective-c facebook ios6 sdk

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

我只想请求读取权限,然后立即在 native 权限对话框中请求发布权限。我发现这样做的唯一方法是修改 FBLoginView(这是应用程序附带的登录 View ),但我想自己做一个按钮,如果用户已登录,则发布到 FB .

这就是我现在的电话

[appDelegate openSessionWithAllowLoginUI:YES];

在委托(delegate)中调用它

- (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”函数?

最佳答案

您可以在 openActiveSessionWithReadPermissions 的完成处理程序中调用 openActiveSessionwithPublishPermissions。在 [self sessionStateChanged:session 之后 状态:状态 错误:错误];

更新:

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

我在一个用于管理所有 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 - 读取权限后直接请求发布权限 - Facebook SDK for iOS 6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16718291/

相关文章:

ios - "Linker command failed with exit code 1 (use -v to see invocation)?"如何解决

ios - UIGestureRecognizerState.Cancelled 与 UIGestureRecognizerState.Failed

ios - 如何在不卸载 Xcode 的情况下删除 iOS 模拟器

facebook - 移动 Cordova/phonegap 无需插件即可登录 Facebook,仅使用 url

ios - 使用 Facebook 登录时出错

ios - 使用本地化字符串时系统警告错误换行

ios - MapKit中的SLIDER-如何使用UISlider实现ZOOM?

ios - 给定两组坐标,如何计算它们之间的距离?

facebook - 除了论坛之外还有哪些其他选择?

ios - Xcode UIWebView 不显示 URL 的内容,空白的白色 webview,没有错误