IMPORTANTE: Esto parece ser cierto para una versión anterior del SDK de Facebook (por ejemplo, 3.9.0). En 3.15.0 ya no funciona de esta manera. Debe usar [session.permissions]
como dice Raphaël Agneau en su respuesta.
Tiene que utilizar el siguiente método, porque [FBSession activeSession].permissions
parece devolver los permisos que solicitó, no los reales.
[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
}
}];
Consulte aquí para obtener más información:
https://developers.facebook.com/docs/facebook-login/ios/v2.0#permissions-checking
Si no se encuentra el permiso es posible que desee solicitar esta manera:
[session requestNewPublishPermissions:PERMISSIONS_YOU_WANT
defaultAudience:FBSessionDefaultAudienceFriends
completionHandler:^(FBSession* session, NSError* error) {
// Try again the /me/permissions above
}];
'[FBSession activeSession].permissions' devuelve los permisos que solicitaste, no los activos. O al menos eso es lo que vi. Ver mi respuesta a continuación. Necesita '[FBRequestConnection startWithGraphPath: @"/me/permission "completionHandler: ...]'. –
No puedo realizar la prueba ahora, pero la documentación dice lo contrario: "Los permisos otorgados al token de acceso durante el flujo de autenticación". https://developers.facebook.com/docs/reference/ios/current/class/FBSession/ –
Hoy actualicé mi pod de Facebook SDK de 3.9.0 a 3.15.1 y ahora '[FBSession activeSession] .permissions' regresa los permisos correctos y '[FBRequestConnection startWithGraphPath: @"/me/permissions "completionHandler: ...]' ya no los devuelve (ahora devuelve {status: granted, permission: installed}). –