Facebook Partager boîte de dialogue ne fonctionne pas lorsque href paramètre est une variable
Je suis en train de partager un lien sur Facebook à partir de l'intérieur de mon application web. J'ai déjà le kit de développement initialisé, etc., et le code suivant fonctionne:
callToMyAPI()
.then(function(response) {
FB.ui({
method: "share",
href: "http://www.google.com",
}, function(response) {
console.log(response);
});
});
Cela ouvre un Facebook dialogue Partager, avec un lien vers http://www.google.com et un petit aperçu intégré (la case en bas de l'écran affiche une image à partir de l'URL, en plus d'un titre et la description////extrait de la page). Quand je clique sur le "publier sur Facebook" bouton dans la boîte de dialogue, puis basculer sur Facebook, je vois le post avec le lien de partage.
Mais j'ai besoin de régler le href
paramètre de façon dynamique, à l'aide d'une valeur qui provient de mon API. J'ai donc fait ceci à la place:
callToMyAPI()
.then(function(response) {
var url = response; //http://www.google.com
FB.ui({
method: "share",
href: url,
}, function(response) {
console.log(response);
});
});
Fondamentalement, tout ce que je suis en train de faire est de remplacer le codé en dur "http://www.google.com"
avec la variable url
(dont la valeur est la réponse, qui est http://www.google.com
). Tout le reste est exactement le même. Mais quand je fais cela, voici ce qui arrive:
- Le Facebook Partager boîte de dialogue s'ouvre, mais il manque l'aperçu intégré de l'URL j'essaie de partager
- Quand je clique sur le "publier sur Facebook" bouton, la boîte de dialogue se ferme, mais rien n'est jamais posté sur Facebook. Et la réponse qui est connecté est juste un tableau vide (
[]
)
Il est donc d'étouffement sur l'utilisation de la réponse de mon API que l' href
valeur, mais je ne comprends pas pourquoi. Comment puis-je résoudre ce problème?
Mise à jour: après beaucoup d'essais et d'erreurs, j'ai découvert ce comportement bizarre...
Si j'utilise http://dev.example.com
comme le href
valeur (où example.com est en fait mon vrai nom de domaine), je n'ai pas aperçu dans la boîte de dialogue Partager, et rien n'est posté sur Facebook:
FB.ui({
method: "share",
href: "http://dev.example.com"
});
Mais si j'utilise http://www.example.com
(note de l' www
) comme le href
valeur (là, où example.com est en fait mon vrai nom de domaine), je n'ai toujours pas obtenir un aperçu dans la boîte de dialogue Partager, mais le post ne:
FB.ui({
method: "share",
href: "http://www.example.com"
});
Cependant, puisqu'il n'y avait pas encore aperçu dans la boîte de dialogue Partager, il ne fait pas joindre le lien vers le message. Ainsi, sur Facebook, tout ce que j'obtiens est un post avec ce commentaire que j'ai écrit, mais pas de lien pour http://www.example.com
.
href: response
?Oui, je n'ai que le premier, mais pas de différence. J'ai juste utilisé le
url
variable pour le rendre un peu plus clair que c'était la réponse de mon API, par rapport à la réponse de Facebook.Cela fonctionne si vous écrivez
var url = 'http://www.google.com';
? Si oui, il se pourrait que la response
variable est un objet et non une chaîne de caractères.Oui, mais ma réponse est une chaîne aussi. Cette question décrit un problème similaire: stackoverflow.com/questions/25440700/...
OriginalL'auteur daGUY | 2014-09-25
Vous devez vous connecter pour publier un commentaire.
La vraie réponse est triple:
Mon
http://dev.example.com
site d'authentification requis; j'ai complètement oublié ce depuis que j'ai mon nom d'utilisateur/mot de passe enregistré, de sorte que jamais il ne m'inviteMon
http://www.example.com
était en fait une URL plus longue (http://www.example.com/test/12345
) qui n'ont pas pointer vers une page existante sur le serveur (il n'existe que sur mon serveur de dev). Donc, Facebook pourrait atteindre l'URL (aucune authentification requise), mais ne pouvait pas se gratter quelque chose de lui, donc pourquoi le post serait aller à travers, mais sans l'aperçu intégréLa page que je partage manquait les différents Open Graph meta tags (
og:type
, etc.); apparemmenthref
est le seul paramètre que vous pouvez passer par le biais de la méthode de partage, tandis que tout ce qui est nécessaire pour l'action doit venir de l'OG de tags sur la pageJ'ai donc ajouté le manque OG balises de la page (sauf pour
og:url
), désactivé auth sur mon serveur de dev (temporairement pour les tests), et maintenant, enfin, le post est en passant par le bon lien est attaché.OriginalL'auteur daGUY
J'ai résolu ce problème pour l'instant à l'aide de la
feed
méthode à la place de lashare
méthode, comme mentionné dans cette réponse:La syntaxe est exactement la même que la
share
méthode, seul le nom du paramètre estlink
plutôt quehref
, et il fonctionne très bien. Ce qui confirme que ma réponse est en effet une chaîne de caractères, donc je ne comprends vraiment pas pourquoishare
ne fonctionne pas de la même manière.Le seul problème est, l'
feed
méthode est obsolète et cesser de travailler sur 4/30/2015. Donc, je voudrais encore trouver un moyen de faire ce travail avec la plus récenteshare
méthode.OriginalL'auteur daGUY
J'ai eu le même problème et je l'ai résolu en ajoutant un hasard paramètre GET à la fin de l'url que j'ai à partager.
Par exemple :
OriginalL'auteur obit