2

iOS 6 のソーシャル フレームワークを使用して、Facebook ビデオのアップロードをアプリに統合しています。ただし、プログラムを実行しても何も起こらず、代わりに次のエラーが表示されます。

操作を完了できませんでした。(com.apple.accounts エラー 6.)

"現在のユーザーに関する情報を照会するには、アクティブなアクセス トークンを使用する必要があります。","type":"OAuthException","code":2500}}"

以下は私のコードで、前半はこのチュートリアルから実装しました。grantedに設定されているためfalse、最初のエラーが発生します。

- (void)uploadToFb {

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

    ACAccountType *facebookAccountType = [accountStore
                                          accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];

    // Specify App ID and permissions
    NSDictionary *options = @{
                               ACFacebookAppIdKey: @"2************",
                               ACFacebookPermissionsKey: @[@"publish_stream", @"publish_actions"],
                               ACFacebookAudienceKey: ACFacebookAudienceFriends
    };

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

          if (granted) 
          {
              NSArray *accounts = [accountStore accountsWithAccountType:facebookAccountType];
              facebookAccount = [accounts lastObject];
          }
          else
          { 
           NSLog(@"Error %@", e.localizedDescription);                                              }

          }
    }];

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

    NSString *filePath = [outputURL path];
    NSURL *pathURL = outputURL;
    NSData *videoData = [NSData dataWithContentsOfFile:filePath];

    NSDictionary *params = @{
    @"title": @"Face Puppets Video",
    @"description": @"A funny video I made with the #FacePuppets iOS app."
    };

    SLRequest *uploadRequest = [SLRequest requestForServiceType:SLServiceTypeFacebook
                                                  requestMethod:SLRequestMethodPOST
                                                            URL:videourl
                                                     parameters:params];
    [uploadRequest addMultipartData:videoData
                           withName:@"source"
                               type:@"video/quicktime"
                           filename:[pathURL absoluteString]];

    uploadRequest.account = facebookAccount;

    [uploadRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
        NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
        if(error){
            NSLog(@"Error %@", error.localizedDescription);
        }else
            NSLog(@"%@", responseString);
    }];
}
4

3 に答える 3

1

こんにちは、とても素敵な共有の例ですiOS (Wiki) (iOS のサンプル プロジェクト、約 3 MB)これを使用して、 Facebook、YouTube、Flicker、Vimeo でビデオを共有できますリンクの上のリンクを見て、この例をテストしてください。

このメソッドのクラスに You を設定する必要がありますAppIdESSViewController.m

- (IBAction)facebook:(id)sender
{
    self.fb = [[[ESSFacebook alloc] initWithDelegate:self
                                               appID:@"youAppID"
                                           appSecret:@"secret"] autorelease];
    NSURL *url = [[NSBundle mainBundle] URLForResource:@"IMG_1203" withExtension:@"MOV"];
    [self.fb uploadVideoAtURL:url];
}

これはFacebookの古いバージョンかもしれませんが、私たちのアプリからビデオを共有するために処理する方法についてのアイデアを得るためです.

于 2013-09-13T05:59:27.370 に答える
0

問題は NSDictionary の作成にあるようです。

   NSDictionary *options = @{
                           ACFacebookAppIdKey: @"2************",
                           ACFacebookPermissionsKey: @[@"publish_stream", @"publish_actions"],
                           ACFacebookAudienceKey: ACFacebookAudienceFriends
   };

最初にキーを渡し、後でオブジェクトを渡すことがわかります。この場合、NSDictionary は +dictionaryWithObjectsAndKeys を呼び出します...

次のような正しい形式を使用してみてください。

NSDictionary *options = [[NSDictionary alloc] initWithObjectsAndKeys:
                         @"###############", ACFacebookAppIdKey, 
                         [NSArray arrayWithObject:@"publish_stream"], ACFacebookPermissionsKey, 
                         nil];

これはうまくいくはずです。

ここで同じ質問を参照してください: [ACAccountStore requestAccessToAccountsWithType] の呼び出し時に "エラー コード 8" を取得する - iOS Facebook

于 2013-09-11T17:10:59.937 に答える
0

後のすべてのコードNSURL *videourlは、別のメソッドに移動する必要があります。現在、requestAccessToAccountsWithType:リクエストの進行中に実行されているため、facebookAccount参照はまだ利用できません。そのため、作成してそのコードを移動する新しいメソッドは、true のcompletion場合にブロックから呼び出される必要がgrantedあります。

すぐに公開許可を要求することはできないことに注意してください。最初に読み取りアクセス許可を要求し、それが付与されたら、公開アクセス許可を要求する必要があります。

于 2013-09-09T14:58:53.830 に答える