1

Facebook SDK 3.1 では、投稿リクエストを送信する直前に、アプリに「publish_stream」があることを確認したいと思います。

問題は、[FBSession.activeSession.permissions indexOfObject:@"publish_stream"] は、ユーザーがログイン中に許可なしを選択した場合でも、決して NSNotFound を返さないことです。投稿を送信する権利があると想定しているにもかかわらず、HTTP が返されるため、これは自然に問題を引き起こします。私は実際に必要な権利を持っていないので、ステータスコード403。

IS はバグであるか、アクティブなセッションのアクセス許可を確認する別の方法があります。

4

4 に答える 4

1

/me/permissions現在使用しているアクセス トークンに関連付けられているすべてのアクセス許可に対して API 呼び出しを行うと、返されます。

于 2012-09-27T16:49:52.930 に答える
0

@Zorayr が言ったように、次のようにすることができます。

NSArray *permissions = FBSession.activeSession.permissions;
    if ([permissions containsObject:@"publish_actions"]) {
       [self performNextTestWithLastPostID:nil];
    } else {
        ...
}
于 2015-03-12T15:52:06.463 に答える
0

Facebook は、これが iOS SDK のバグであることを確認しました: https://developers.facebook.com/bugs/111727002307769

バグはまだ iOS SDK 3.1 に残っています

/me/permissions回避策は、Igy が提案したようにAPI 呼び出しを使用して権限を確認することです。

于 2012-11-23T11:51:42.120 に答える
0
[FBSession.activeSession.permissions indexOfObject:@"publish_stream"] != NSNotFound

上記のコードは、書き込み権限を確認する正しい方法ではありません。

その代わりに、次のことを試してください。

-(BOOL)hasWritePermissions{

    NSArray *permissiones = [FBSession activeSession].permissions;
    for (NSString *permission in permissiones) {

        if ([permission isEqualToString:@"publish_actions"]) {
            return YES;
        }
    }

    return NO;
}
于 2014-03-25T13:30:42.943 に答える