2

ユーザーが既に公開権限を付与しているかどうかを確認しようとしています。彼が以前にアクセス許可を付与していない場合は、次の方法でアクセス許可画面に移動します: requestNewPublishPermissions

  -(void)checkPermissions
    {
        // Get the most recent status
        [FBRequestConnection
         startWithGraphPath:@"me/permissions"
         completionHandler:^(FBRequestConnection *connection,
                             id result,
                             NSError *error) {
             if (!error) { 
                    //This Condition Never Executed

                 if([[result objectForKey:@"data"] objectForKey:@"publish_actions"])
                 {
                     //permissions exist
                 }
                 else
                 {
                     [self openSessionForPublishPermissions];
                 }
                 NSString *permission = [[result objectForKey:@"data"] objectForKey:@"publish_actions"];

                 NSLog(@"permissions data = %@",data);
             }
             else
             {
                 NSLog(@"error"); //Control goes to this block
             }
         }];

    }

上記のコードでは、if(!error) ブロックは実行されず、常にエラーを返します

どこが間違っているのですか?何か不足していますか?

4

2 に答える 2

2

アクティブなセッションで権限を確認できます。HelloFacebookSample での実行方法は次のとおりです。

if ([FBSession.activeSession.permissions indexOfObject:@"publish_actions"] == NSNotFound) {
    // permission does not exist
} else {
    // permission exists
}
于 2013-07-03T15:57:02.143 に答える
0

アクセス許可を手動で確認する代わりに、セッションがアクティブかどうかを確認して公開アクセス許可を要求できます。ユーザーが既にアクセス許可を付与している場合、追加の確認ダイアログは表示されません。以下のコード サンプルを参照してください。

- (void)requestWritePermission:(UIViewController *)viewController channel:(NSString *)channel callback:(void(^)(BOOL success))callback
{   
    if ([FBSession.activeSession isOpen])
    {
        [FBSession.activeSession requestNewPublishPermissions:@[@"publish_actions"]
                                              defaultAudience:FBSessionDefaultAudienceFriends
                                            completionHandler:^(FBSession *session, NSError *error) {
                                                callback(error == nil);
                                            }];
    }
    else
    {
       // Attempt to request publish permission without read permission. 
    }
}

コードは完全ではありませんが、開始する必要があります。

于 2014-04-29T07:50:51.863 に答える