2

iPhoneアプリからFacebookページ(私は管理者です)に写真を投稿しようとしています。私はFBセッションを使用してセッションを作成し、読み取り許可を取得し、manage_pages許可を取得してから、FacebookページのアプリIDを正常に取得しました

[FBRequestConnection startWithGraphPath:@"/me/accounts" completionHandler:^(FBRequestConnection *connection, id result, NSError *error)
 {
     NSLog(@"%@", [result description]);
 }]; // have token, what now?

これはまだ問題ありません。次に、写真を app_id/photos フィードに投稿しようとしましたが、機能しません。写真は正しくアップロードされますが、(プロフィールのように) ページ自体ではなく写真をアップロードしていることがわかります。何が問題なのですか?

パラメータと呼び出しのコードは次のとおりです

NSDictionary *params = [NSDictionary 
dictionaryWithObjects: [NSArray arrayWithObjects:
    [UIImage imageNamed:@"Icon.png"], 
    @"This is my first photo post from xcode app", nil] 
forKeys:[NSArray arrayWithObjects:
    @"source", 
    @"message", nil]];

[FBRequestConnection startWithGraphPath:@"MyPageID/photos" parameters:params HTTPMethod:@"POST" completionHandler:^(FBRequestConnection *connection, id result, NSError *error)
 {
     NSLog(@"%@", [result description]);
 } ];

呼び出しからの[result description]ログは問題ありません (id = xx と "post_id" = yy が返されますが、これは正しいと思います)。呼び出し自体も同様です。唯一の問題は、ページではなく作成者として表示されることです。自体。呼び出しているため、MyPageID は正しいです。

NSDictionary *paramsFeed = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"This is my first page post from xcode app", nil] forKeys:[NSArray arrayWithObjects:@"message", nil]];

[FBRequestConnection startWithGraphPath:@"390106241058188/feed" parameters:paramsFeed HTTPMethod:@"POST" completionHandler:^(FBRequestConnection *connection, id result, NSError *error)
 {
     NSLog(@"result: %@", [result description]);
 }];

また、dictionaryKey @"picture" を使用してそこに写真を呼び出しme/photosて投稿すると、その写真が自分の壁に完全に投稿されます。

問題が隠されている可能性がある場所を知っている人はいますか?

4

1 に答える 1

1

/feedページの更新のためにこれを行う必要がなかったのは奇妙ですが、解決策を見つけました

Arpit Kumar Kulshrestha 氏に多大な感謝を捧げます。彼は、私の前の問題 ( Xcode - iPhone アプリから Facebook 管理ページ フィードに写真を共有する方法)の正しい方法を指摘してくれました。

解決策:以前に新しいものを設定しようとしましたFBSessionが、まだ多くのエラーがあったため、そのルートを離れて別のルートに行きました。ただし、それを行うことは完全に理にかなっています-FBAccessTokenDataページのトークンを含む を作成し、他のものをアクティブなセッションと同じに設定します-このように

FBAccessTokenData *tokenData = [FBAccessTokenData createTokenFromString:pageTokenString permissions:[FBSession activeSession].accessTokenData.permissions expirationDate:[FBSession activeSession].accessTokenData.expirationDate loginType:FBSessionLoginTypeFacebookApplication refreshDate:nil];

次に、新しい を作成する必要があります。FBSession重要なことは、tokenCacheStrategy をデータのないもの、つまり に設定する必要があること[FBSessionTokenCachingStrategy nullCacheInstance]です。空白の割り当て ( [[FBSession alloc] init]) を行ったところ、多くのエラーが発生しましたが、これを使用すると

FBSession *sessionFb = [[FBSession alloc] initWithAppID:appID permissions:[NSArray arrayWithObjects: @"publish_stream", @"manage_pages", nil] urlSchemeSuffix:nil tokenCacheStrategy:[FBSessionTokenCachingStrategy nullCacheInstance]];

それは完全に機能します。そして、この新しいセッションができたら、データが行き来するためのパスを開きたいと思います。次のようにすることができます。

[sessionFb openFromAccessTokenData:tokenData completionHandler:^(FBSession *session, FBSessionState status, NSError *error)
 {

 }];

正しく動作し始める前の最後の部分は、activeSession をこの新しく割り当てられて開かれたセッションに設定することです。次のようにします。

[FBSession setActiveSession:sessionFb];

これらの変更をすべて行った後、写真ページの共有が魔法のように機能し始めました。ただし、以前は写真の共有が機能しなかったのに、フィードの共有は機能した可能性があるかどうかはまだわかりません..しかし、これで問題は解決しました。

于 2013-09-18T23:36:48.210 に答える