3

新しい Facebook SDK for iOS (3.0) を使用するようにアプリを更新しています。ただし、フィード ダイアログを使用しようとすると問題が発生しました。新しい SDK でフィード ダイアログを使用する方法に関する Facebook の開発者 Web サイトの指示に従いましたが、ダイアログを表示すると次のエラーが発生します。

API エラー コード: 110
API エラーの説明: 無効なユーザー ID
エラー メッセージ: ユーザー Cookie がありません (セッション ユーザーを検証するため)

これが私のコードです:

Facebook *facebook = [[Facebook alloc] initWithAppId:FBSession.activeSession.appID andDelegate:nil];

facebook.accessToken = FBSession.activeSession.accessToken;
facebook.expirationDate = FBSession.activeSession.expirationDate;

NSMutableDictionary *feedParams = [[NSMutableDictionary alloc] init];

[feedParams setObject:self.video.alternateLink.href
               forKey:@"link"];
// link title = video title
[feedParams setObject:self.video.title.stringValue
               forKey:@"name"];
// link picture = video thumbnail
[feedParams setObject:self.video.mediaGroup.highQualityThumbnail.URLString
               forKey:@"picture"];

NSDictionary *privacyDict = [NSDictionary dictionaryWithObjectsAndKeys:@"CUSTOM", @"value", @"SELF", @"friends", nil];
SBJSON *jsonWriter = [[SBJSON alloc] init];

[feedParams setObject:[jsonWriter stringWithObject:privacyDict error:NULL]
               forKey:@"privacy"];

[jsonWriter release];

[facebook dialog:@"feed"
       andParams:feedParams
     andDelegate:self];

[feedParams release];

self.facebook = facebook;
[facebook release];

認証の問題のようですが、有効なアクセス トークンを Facebook オブジェクトに渡しているため、何が問題なのかわかりません。誰かが私を助けることができれば、それは素晴らしいことです. ありがとう。

4

1 に答える 1

2

示したように、従来の Facebook クラスと統合するときに FBSession.activeSession を使用できます。セッション オブジェクトを直接インスタンス化するのではなく、activeSession を使用する場合に考えられる問題の 1 つは、セッション オブジェクトが開いていない可能性があることです。Facebook クラスをアクティブなセッションと統合するためのフォームを示す簡単なサンプルを次に示します。

if (FBSession.activeSession.isOpen) {
    // Create a Facebook instance
    Facebook *facebook = [[Facebook alloc] initWithAppId:FBSession.activeSession.appID
                                             andDelegate:nil]; // commonly self

    // Set the session information for the Facebook instance
    facebook.accessToken = FBSession.activeSession.accessToken;
    facebook.expirationDate = FBSession.activeSession.expirationDate;

    // Put together the dialog parameters
    NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                   @"I'm using the the Facebook SDK for iOS", @"name",
                                   @"Facebook for iOS", @"caption",
                                   @"Check out the Facebook SDK for iOS!", @"description",
                                   @"https://developers.facebook.com/ios", @"link",
                                   @"http://www.facebookmobileweb.com/hackbook/img/facebook_icon_large.png", @"picture",
                                   nil];

    // Invoke the dialog
    [facebook dialog:@"feed" andParams:params andDelegate:nil];

    [facebook release];
}

アクティブなセッションが開いていない場合は、表示されている内容に沿ってエラーが発生します。次の行に沿った呼び出しは、ロジックの前のどこかでこれを解決します。

[FBSession openActiveSessionWithAllowLoginUI:YES];

お役に立てれば!

于 2012-08-07T17:01:14.540 に答える