J'ai un bouton pour partager un lien. J'utilise fondamentalement deux appels:
C'est donc le bouton Action: P> OpenactiveSessionWithReadPersmissions Code> et
DemandeNewPublishpermissions Code>.
-(void) _share;
{
NSMutableDictionary *params_dict = [NSMutableDictionary dictionary];
// setting some params
[FBRequestConnection startWithGraphPath:@"me/feed" parameters:params_dict HTTPMethod:@"POST" completionHandler:^(FBRequestConnection *connection, id result, NSError *error)
{
if (result)
{
// sharing succedeed, do something
}
else if (error)
{
//sharing failed, do something else
}
}];
}
3 Réponses :
Vous pouvez utiliser cette
-(void)publishFacebook { NSMutableDictionary *postParams2= [[NSMutableDictionary alloc] initWithObjectsAndKeys: haberLink, @"link", @"abc.com", @"name", title, @"caption", desc, @"description", nil]; [FBRequestConnection startWithGraphPath:@"me/feed" parameters:postParams2 HTTPMethod:@"POST" completionHandler:^(FBRequestConnection *connection, id result, NSError *error) { NSString *alertText; if (error) { alertText = [NSString stringWithFormat: @"error: domain = %@, code = %d", error.domain, error.code]; } else { alertText = [NSString stringWithFormat: @"Shared Facebook"]; [[[UIAlertView alloc] initWithTitle:@"Shared Facebook" message:alertText delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil] show]; } }];
Merci pour votre aide, mais je voudrais vraiment comprendre si je fais quelque chose de mal et que la bonne façon de gérer ce comportement facebook
Dans votre méthode de partage préparatoire, vous l'avez déjà publiée lorsque vous appelez la méthode _share poster à nouveau
Oui, mais l'un est dans le bloc-même (si je n'ai pas la permission de publication, demandez-la, puis partagez-la), l'autre est dans le bloc d'en plus (si j'ai déjà publié la permission, il suffit de partager). Le problème est que _share est appelé dans l'énoncé d'essentiel de _PreveHare déclenché par FLBSessionStateOpenTokelOstOstended, tandis que RequestNewPublishpermissions n'a pas encore appelé son gestionnaire d'achèvement, lorsque _share est appelé à nouveau
Il semble que par conception, Facebook SDK conserve des références à bloquer les gestionnaires, même après avoir été appelés. Ainsi, dans votre appel à OpenactiveSessionWithReadPersmissions strong> Le gestionnaire d'achèvement peut être appelé de nombreuses fois, au cas où l'état de la session change. Voir Facebooks commenter sur ce numéro ici . En tant que travail autour, vous voudrez peut-être mettre en œuvre Votre propre mécanisme qui assure que le gestionnaire est tiré une seule fois: p>
Veuillez lire Mise à niveau de 3,0 à 3.1 , en particulier le paragraphe demandant des autorisations de lecture et d'écriture séparément em>. Il semble que Facebook SDK ne soit pas censé être utilisé de cette façon. P>
Vous êtes maintenant obligé de demander lire et publier la permission séparément (et dans cet ordre). Très probablement, vous demanderez les autorisations de lecture de la personnalisation lorsque l'application démarre et que l'utilisateur se connecte d'abord. Plus tard, le cas échéant, votre application peut demander des autorisations de publication lorsqu'il a l'intention de publier des données sur Facebook. P>
blockQuote>
et p>
Il est important que vous n'essayez pas simplement d'appeler les deux méthodes individuelles de retour pour remplacer l'une des fonctions obsolètes. P>
blockQuote>
Je me demande comment vous avez réussi à résoudre ce problème. BTW, je reçois le même rapport d'accident (FBSESSession: il n'est pas valide pour réautoriser lorsqu'un appel de rétention précédent n'est pas encore terminé). P>
Veuillez consulter la réponse dans ce message: [Entrez la description du lien] [1] [1]: Stackoverflow.com/questions/12915420/...