web-dev-qa-db-fra.com

FBSDKLoginManager logInWithReadPermissions?

J'utilise FBSDKLoginButton pour permettre la connexion de l'utilisateur en utilisant Facebook et en utilisant FBSDKLoginButton.readPermissions = @[@"public_profile",@"email",@"user_likes",@"email",@"user_birthday"];

pour demander des autorisations, mais j'ai besoin d'une autre autorisation qui est publication_actions que je devrais utiliser FBSDKLoginManager

avec

 logInWithReadPermissions:@[@"public_profile",@"user_likes",@"user_birthday"] 
logInWithPublishPermissions:@[@"publish_actions"]

mais cela pour une raison quelconque affecte ma permission "il manque une partie de ma permission check image

Code: -

FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
                [login logInWithPublishPermissions:@[@"publish_actions"] 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:@"publish_actions"]) {
                            // Do work
                        }
                    }
                }];

[login logInWithReadPermissions:@[@"public_profile",@"",@"user_likes",@"user_birthday"] 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
        }
    }
}];

Résultat: -

** il faut beaucoup de temps pour rediriger l'utilisateur vers la vue des autorisations? et toutes mes autorisations n'apparaissent pas à l'utilisateur **

enter image description here

Remarque: - je sais que cet avertissement signifie que je dois soumettre mon application pour examen, mais ce n'est pas ce que je demande en ce moment.

Mise à jour

Quand j'ai essayé la solution "Dheeraj Singh", mais dans ce cas, l'utilisateur sera redirigé deux fois vers Facebook pour la première fois pour obtenir publish_action, puis pour obtenir les e-mails et l'autorisation d'anniversaire, ce qui est mauvais.

19
Omarj

Facebook Login permet à votre application d'accéder au profil public, à la liste d'amis et à l'adresse e-mail d'une personne. Ces trois autorisations ne nécessitent pas de révision. Au lieu de cela, les utilisateurs de votre application choisiront s'ils souhaitent accorder l'accès à ces informations.

Pour que votre application accède à des éléments supplémentaires du profil Facebook d'une personne (autorisations de lecture) ou pour publier du contenu sur Facebook en son nom (autorisations d'écriture), vous devrez soumettre pour examen.

Voir: https://developers.facebook.com/docs/apps/review#submitlogin

Mise à jour:

Les applications doivent séparer la demande d'autorisations de lecture et de publication.

 FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];

    [login logInWithPublishPermissions:@[@"publish_actions"] 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:@"publish_actions"]) {
                // Do work

                [login logInWithReadPermissions:@[@"user_likes",@"user_birthday"] 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:@"user_birthday"]) {
                            // Do work

                            NSLog(@"Permission  2: %@",result.grantedPermissions);
                        }
                    }
                }];

            }
        }
    }];

Vous n'avez pas besoin de public_profile dans la permission de lecture comme si accordé la permission de publier_actions, il obtient également la permission pour public_profile.

12
Dheeraj Singh

Comme je l'ai vu, vous codez que vous essayez d'utiliser les " user_likes ", " user_birthday "," public_profile "et" publish_actions "autorisations .

Depuis le 1er mai 2015, Facebook a uniquement activé " public_profile ", "email" et " user_friends "sont disponibles sans le processus d'approbation.

Pour " user_likes ", " user_birthday " et " publish_actions "vous devez obtenir l'approbation du facebook .

Pour le processus de révision, vous pouvez obtenir de l'aide de Facebook Review .

6
V.J.

J'ai également le même problème avec l'autorisation user_posts pendant deux semaines, mais après quelques recherches, j'ai trouvé la solution pour cela, si vous rencontrez toujours ce problème, suivez ces étapes

  1. Accédez à http://developers.facebook.com et connectez-vous à votre compte de développeur.
  2. Sélectionnez votre application et accédez à la section Rôles.
  3. Ajoutez un testeur dans la section Testeurs.
  4. Réinstallez ensuite l'application et connectez-vous à l'aide de ce compte de testeur.
  5. Maintenant, vous essayez d'obtenir les autorisations requises du testeur et le testeur verra toute la liste des autorisations.
4
Waris Shams
var login = FBSDKLoginManager()


@IBAction func fbBtnPressed(_ sender: AnyObject) {

    login.logIn(withReadPermissions: ["email"], from: self) { (FBSDKLoginManagerLoginResult, Error) in

        if Error != nil {
            print("O Login via Facebook Falhou. Erro: \(Error)")
        } else {
            let accessToken = FBSDKAccessToken.current().tokenString
            self.gotoScreen() //Function for screen after login succesfull 
            print("Acesso concedido ao Facebook. \(accessToken)")
        }

    }

}
1
Ewerson