ios - 在 iOS 6 中使用 SLRequest 发布到 Facebook

标签 ios facebook social-framework

尝试让我的应用程序使用 SLRequest 向 Facebook 发布简单的帖子,但遇到了问题。权限被授予很好,它只是不会发布。

-(void)requestPermissions
{
    ACAccountStore *accountStore = [[ACAccountStore alloc] init];
    __block ACAccount *facebookAccount = nil;

    ACAccountType *facebookAccountType = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];

    // Specify App ID and permissions
    NSDictionary *options = @{
ACFacebookAppIdKey: @"MYAPPID",
ACFacebookPermissionsKey: @[@"email", @"user_about_me", @"user_likes"],
ACFacebookAudienceKey: ACFacebookAudienceFriends
    };

    [accountStore requestAccessToAccountsWithType:facebookAccountType
                                          options:options completion:^(BOOL granted, NSError *e)
     {
         if (granted) {

             NSDictionary *options2 = @{
         ACFacebookAppIdKey: @"MYAPPID",
         ACFacebookPermissionsKey: @[@"publish_stream", @"publish_actions"],
         ACFacebookAudienceKey: ACFacebookAudienceFriends
             };
             [accountStore requestAccessToAccountsWithType:facebookAccountType options:options2 completion:^(BOOL granted, NSError *error) {
                 if (granted) {
                     NSArray *accounts = [accountStore accountsWithAccountType:facebookAccountType];

                     facebookAccount = [accounts lastObject];                 }
                 else {
                     NSLog(@"Access denied 2");
                     NSLog(@"%@", [error description]);
                 }
             }];
         } else {
             NSLog(@"Error: %@", [e description]);
             NSLog(@"Access denied");
         }
     }];

    NSDictionary *parameters = @{@"message": @"This is a test"};

    NSURL *feedURL = [NSURL URLWithString:@"https://graph.facebook.com/me/feed"];

    SLRequest *feedRequest = [SLRequest
                              requestForServiceType:SLServiceTypeFacebook
                              requestMethod:SLRequestMethodPOST
                              URL:feedURL
                              parameters:parameters];
    NSLog(@"AnythingHere?");
    feedRequest.account = facebookAccount;

    [feedRequest performRequestWithHandler:^(NSData *responseData,
                                             NSHTTPURLResponse *urlResponse, NSError *error)
     {
         // Handle response
         NSLog(@"%@%@%@", error, responseData, urlResponse);
     }];
}

日志中的错误在最后一部分返回 null。对此有什么想法吗?

更新:所以问题是 HTTP 响应返回为 400。

最佳答案

您应该犯了复制/粘贴错误。

选项已被实例化两次以及您互锁的两个 requestAccessToAccountsWithType 方法。

这看起来很常见且不太可能:

NSDictionary *options = @{...};
[accountStore requestAccessToAccountsWithType:facebookAccountType options:options completion:^(BOOL granted, NSError *e) {
    if (granted) {
         NSDictionary *options2 = @{...};
         [accountStore requestAccessToAccountsWithType:facebookAccountType options:options2 completion:^(BOOL granted, NSError *error) {
             if (granted)
                 ...
             else
                ...
        }];
    } else {
        ...
    }
}];

你应该从the beginning重新开始.

关于ios - 在 iOS 6 中使用 SLRequest 发布到 Facebook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14219706/

相关文章:

ios - Facebook SLRequest 搞乱 NSURLConnection

facebook - 如何在 iOS 6 中使用社交框架点赞 Facebook 页面/关注 Twitter 用户?

ios - 如何检测设备是否刚刚重启?

python - Fbprophet 快速入门示例 - KeyError : 'ds'

ruby-on-rails - 使用 fb_graph Ruby gem 从 Facebook 检索好友位置

ios - 在 iOS 中是否可以使用没有访问 token 的用户 ID 来获取用户的好友列表?

objective-c - 未调用 requestAccessToAccountsWithType 完成

ios - CADisplayLink 目标选择器在失效后被触发

IOS开发者证书每天过期

ios - Crashlytics 是否会生成有关低内存应用程序终止 (iOS) 的崩溃报告?