重要提示:對於較舊版本的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
}
}];
這裏看到更多的信息:
https://developers.facebook.com/docs/facebook-login/ios/v2.0#permissions-checking
如果沒有找到許可,你可能想通過這種方式提出要求:
[session requestNewPublishPermissions:PERMISSIONS_YOU_WANT
defaultAudience:FBSessionDefaultAudienceFriends
completionHandler:^(FBSession* session, NSError* error) {
// Try again the /me/permissions above
}];
'[FBSession activeSession]。權限「將返回您請求的權限,而不是活動權限。或者至少這是我所看到的。請參閱下面的答案。你需要'[FBRequestConnection startWithGraphPath:@「/ me/permissions」completionHandler:...]'。 – 2014-07-02 19:50:51
我現在無法測試,但文檔中另有說明:「在身份驗證流程中授予訪問令牌的權限。」 https://developers.facebook.com/docs/reference/ios/current/class/FBSession/ – 2014-07-04 15:31:17
今天我將我的Facebook SDK pod從3.9.0更新到3.15.1,現在'[FBSession activeSession] .permissions'返回正確的權限和'[FBRequestConnection startWithGraphPath:@「/ me/permissions」completionHandler:...]'不再返回它們(現在它返回{status:granted,permission:installed})。 – 2014-07-07 11:48:59