Facebook iOS SDK список разрешений возвращается ноль
У меня есть код в контроллере входа, который проверяет, предоставил ли пользователь определенные разрешения. Код работал нормально в течение нескольких недель, но до недавнего времени он перестал работать как FBSession.activeSession(). Permissions возвращает nil вместо списка разрешений
Кто-нибудь еще имеет подобную проблему или знает, что может быть причиной? Я использую Parse + Facebook Вот мой код (в Swift)
if FBSession.activeSession().state != FBSessionState.Open {
PFFacebookUtils.logInWithPermissions(permissions, block: { (user: PFUser?, error: NSError?) -> Void in
if user == nil {
if error != nil {
println("User cancelled fb login")
} else {
println("Error with login: \(error)")
}
} else {
if user!.isNew {
println("Brand new user signed up!")
} else {
println("Returning user logged in!")
}
self.voiceMeAPI.requestDataForUserMe { (finished) -> () in
//This is printing nil
println(FBSession.activeSession().permissions)
if contains(FBSession.activeSession().permissions as [String], "user_friends") {
self.updateFriendsThenPushToHomeViewController(isNewUser: user!.isNew)
} else {
dispatchOnMainQueueAfterDelay(0, { () -> () in
self.presentViewController(self.noFriendsListAlertController, animated: true, completion: nil)
})
}
}
}
})
2 ответа
Некоторые из документов со страницы SDK Facebook могут иметь то, что вы хотите. В частности, раздел под названием "Использование пользовательских интерфейсов входа".
Вот Obj-C из Документов SDK Facebook:
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login logInWithReadPermissions:@[@"email"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
if (error) {
// Process error
} else if (result.isCancelled) {
// Handle cancellations
} else {
// If you ask for multiple permissions at once, you
// should check if specific permissions missing
if ([result.grantedPermissions containsObject:@"email"]) {
// Do work
}
}
}];
Вот это (не проверено!) В Swift:
var login: FBSDKLoginManager = FBSDKLoginManager()
login.logInWithReadPermissions(["email"], handler: { (result:FBSDKLoginManagerLoginResult!, error:NSError!) -> Void in
if (error != nil){
//Process error
}else if result.isCancelled{
//Handle cancellations
}else{
// If you ask for multiple permissions at once, you
// should check if specific permissions missing
if result.grantedPermissions.contains("email"){
//Do work
}
}
})
Убедитесь, что вы установили свои разрешения на то, что вы хотите, чтобы они были. Прямо под вашим классом добавьте:
let permissions = ["public_profile", "email", "user_friends"]