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:

  1. Le Facebook Partager boîte de dialogue s'ouvre, mais il manque l'aperçu intégré de l'URL j'essaie de partager
  2. 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.

Avez-vous essayez simplement 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