重要:これは、古いバージョンのFacebook SDK(例:3.9.0)に当てはまります。 3.15.0では、この方法ではもう動作しません。 RaphaëlAgneauが答えた通りに[session.permissions]
を使用してください。
[FBSession activeSession].permissions
は、実際の要求ではなく要求したアクセス許可を返すように思われるため、次の方法を使用する必要があります。
[FBRequestConnection startWithGraphPath:@"/me/permissions"
completionHandler:^(FBRequestConnection *c, id result, NSError *error) {
if (!error) {
NSDictionary *permissions= [(NSArray *)[result data] objectAtIndex:0];
if (![permissions objectForKey:@"publish_actions"]) {
// Ok, continue with your logic
} else {
// Permission not found, maybe request it (see below)
}
} else {
// Treat error
}
}];
は、詳細はこちらをご覧ください:
[session requestNewPublishPermissions:PERMISSIONS_YOU_WANT
defaultAudience:FBSessionDefaultAudienceFriends
completionHandler:^(FBSession* session, NSError* error) {
// Try again the /me/permissions above
}];
'[FBSession activeSession]。permissions'は要求したアクセス権を返します。少なくとも、それは私が見たものです。下の私の答えを見てください。あなたは '[FBRequestConnection startWithGraphPath:@"/me/permissions "completionHandler:...]'が必要です。 –
私は今テストすることができませんが、ドキュメンテーションに別途記載されています: "認証フロー中にアクセストークンに付与されたアクセス権。" https://developers.facebook.com/docs/reference/ios/current/class/FBSession/ –
今日、私は自分のFacebook SDKポッドを3.9.0から3.15.1に更新しました。そして今度は[FBSession activeSession] .permissions'が返します。適切な権限と '[FBRequestConnection startWithGraphPath:@"/me/permissions "completionHandler:...]'はもうそれらを返しません(今度は{status:granted、permission:installed}を返します)。 –