I am trying to request the user @"publish_actions"
permission for the active FBSession
. After hours of researching online I found two approaches but both of them do not deliver the expected result : @"publish_actions
in the session.permissions
array.
First approach:
[FBSession openActiveSessionWithPublishPermissions:@[@"publish_actions"] defaultAudience:FBSessionDefaultAudienceFriends allowLoginUI:YES completionHandler:^(FBSession *session, FBSessionState status, NSError *error) {
NSLog(@"---> %@", session.permissions);
}];
In this case the session.permissions
does not contain @"publish_actions"
, the status is FBSessionStateOpen
and the error is nil
.
Second approach:
[FBSession openActiveSessionWithReadPermissions:nil allowLoginUI:YES completionHandler:^(FBSession *session1, FBSessionState status, NSError *error) {
if (session1.state == FBSessionStateOpen) {
// then ask for publishing permission
if (![session1.permissions containsObject:@"publish_actions"]) {
[FBSession.activeSession requestNewPublishPermissions:@[@"publish_actions"] defaultAudience:FBSessionDefaultAudienceFriends completionHandler:^(FBSession *session2, NSError *error) {
NSLog(@"--> %@", session2.permissions);
if (error.fberrorCategory == FBErrorCategoryUserCancelled){
NSLog(@"User canceled?!");
}
}];
}else{
// permission already granted
}
}else{
// session not open
}
}];
In this second case, session2
is open, there is no @"publish_actions"
within the permissions and the error category is FBErrorCategoryUserCancelled
. The weird thing is that I haven't canceled the publish permission request and more strange, I haven seen that request inside the Facebook app. (it was a fast jump between my app and Facebook).
In this post on stackoverflow I read that I should put my publish permission request in a dispatch_async(dispatch_get_current_queue(), ^{});
block. I did that and still the same result: the error of the requestNewPublishPermissions:completionHandler:
is : Error Domain=com.facebook.sdk Code=2 "The operation couldn’t be completed. com.facebook.sdk:ErrorReauthorizeFailedReasonUserCancelled"
Any ideas on how I could get a hold of a session that has the @"publish_actions"
permission?
Later edit: I tried also this approach and still, the error is the same.
Aucun commentaire:
Enregistrer un commentaire