0

这是我将视频发布到 Facebook 的代码:

ACAccountStore *accountStore = [[ACAccountStore alloc]init];

NSArray * p = [NSArray arrayWithObjects:@"email",@"basic_info", nil];

NSDictionary * dict=[NSDictionary dictionaryWithObjectsAndKeys:@"xxx",ACFacebookAppIdKey,p,ACFacebookPermissionsKey,ACFacebookAudienceEveryone,ACFacebookAudienceKey, nil];

NSDictionary *options = @{
                          ACFacebookAppIdKey: @"xxx",
                          ACFacebookPermissionsKey: @[@"publish_actions",@"publish_stream, " ],
                          ACFacebookAudienceKey: ACFacebookAudienceFriends,
                          };
ACAccountType *facebookAccountType = [accountStore
                                      accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];

[accountStore requestAccessToAccountsWithType:facebookAccountType options:dict completion:^(BOOL granted, NSError *error) {
    NSLog(@"blablalba");
    //do nothing here.
    if (granted) {
        [accountStore requestAccessToAccountsWithType:facebookAccountType options:options completion:^(BOOL granted, NSError *error) {
            if (granted) {
                NSLog(@"posting to fb..");


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

                NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
                NSURL *videoPathURL = [defaults URLForKey:@"vidURL"];

                //        NSURL *videoPathURL = [[NSURL alloc]initFileURLWithPath:videoPath isDirectory:NO];
                //        NSData *videoData = [NSData dataWithContentsOfFile:videoPath];
                NSData *videoData = [NSData dataWithContentsOfFile:[videoPathURL path]];

                NSString *status = @"One step closer.";
                NSDictionary *params = @{@"title":status, @"description":status};

                SLRequest *request = [SLRequest requestForServiceType:SLServiceTypeFacebook
                                                        requestMethod:SLRequestMethodPOST
                                                                  URL:url
                                                           parameters:params];

                [request addMultipartData:videoData
                                 withName:@"source"
                                     type:@"video/quicktime"
                                 filename:[videoPathURL absoluteString]];

                [request performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
                    if (error) {
                        NSLog(@"error: %@", error);
                    }
                    NSLog(@"httpresponse: %@", urlResponse);
                }];
            }
        }];
    }

}];

但它的回归:

"OAuth \"Facebook Platform\" \"invalid_request\" \"必须使用活动访问令牌来查询当前用户的信息。\"";

我不知道我错过了什么。有什么帮助吗?

4

2 回答 2

1

您忘记将 facebook 帐户设置为请求。当您被授予访问权限时,获取该帐户:

                           NSArray *accounts = [self.accountStore
                                accountsWithAccountType:fbAccountType];
                        self.facebookAccount = [accounts lastObject];

创建请求后,设置帐户

    [request setAccount:self.facebookAccount];
于 2014-11-05T02:46:25.423 回答
0

发现我必须将令牌添加到 params 字段:

NSString *status = @"One step closer.";
NSDictionary *params = @{@"title":status, @"description":status, @"access_token":accessToken};

希望它可以帮助别人。

于 2014-02-10T04:07:36.177 回答