Facebook Graph API - télécharger une photo à l'aide de JavaScript
Est-il possible de télécharger un fichier en utilisant le Facebook Graph API à l'aide de javascript, je sens que je suis proche. Je suis en utilisant le code JavaScript suivant
var params = {};
params['message'] = 'PicRolled';
params['source'] = '@'+path;
params['access_token'] = access_token;
params['upload file'] = true;
function saveImage() {
FB.api('/me/photos', 'post', params, function(response) {
if (!response || response.error) {
alert(response);
} else {
alert('Published to stream - you might want to delete it now!');
}
});
}
Lors de l'exécution de cette je reçois le message d'erreur suivant...
"OAuthException" - "(#324) Requires upload file"
Quand je l'ai essayer et de recherche, cette méthode tout ce que je peux trouver est une méthode php que apears pour résoudre ce
$facebook->setFileUploadSupport(true);
Cependant, je suis à l'aide de JavaScript, il ressemble à cette méthode pourrait être de faire avec Facebook Graphique autorisations, mais j'ai déjà définir les autorisations user_photos et publish_stream, dont j'ai cru sont les seuls, j'en aurais besoin pour effectuer cette opération.
J'ai vu un couple de questions sans réponse au sujet de ce sur stackoverflow, j'espère que je pourrai expliqué moi-même assez. Merci les gars.
- Si vous êtes ici à la recherche d'une réponse, regarder au-delà de la première réponse
Vous devez vous connecter pour publier un commentaire.
L'API dit: "Pour publier une photo, envoi d'une requête POST avec la photo en pièce jointe comme multipart/form-data."
FB s'attend à ce que les octets de l'image à être transférés sont dans le corps de la requête HTTP, mais ils ne sont pas là. Ou de le regarder d'une autre manière - là où, dans le FB.api() appel sont vous fournir le contenu réel de l'image elle-même?
La FB.(api) API est mal documentée, et ne fournit pas un exemple de un HTTP POST qui comprend un corps. On peut inférer de l'absence d'un tel exemple, qu'elle ne prend pas en charge cette.
C'est probablement OK - FB.(api) est à l'aide de quelque chose qui s'appelle
XmlHttpRequest
sous les couvertures qui ne le soutien, y compris un corps ... rechercher dans vos favoris référence JavaScript.Cependant, vous aurez encore 2 sous-problèmes à résoudre:
(d'ailleurs, la nécessité de coder le corps du message est probablement ce que le PHP setFileUploadSupport(true) la méthode est - à dire la
facebook
objet d'encoder le corps du message commemultipart/form-data
avant de l'envoyer)Mais c'est un peu meessier que
Malheureusement, le sous-problème '2' peut vous mordre - il n'existe aucun moyen (la dernière fois que j'ai regardé) pour extraire les octets d'une image à partir du navigateur de l'Image de l'objet.
Si l'image téléchargée est accessible via une URL, vous pouvez récupérer les octets avec XmlHttpRequest. Pas trop mauvais.
Si l'image provient du bureau de l'utilisateur, de votre probable recours est de proposer à l'utilisateur un:
(notez que
source
références le nom donné au fichier de téléchargement de widget)... et l'espoir que FB prévu la réception de données de cette manière (essayez avec un statique HTML formulaire d'abord, avant de coder, il dynamiquement en JS). On peut en déduire qu'en fait il n', car ils n'offrent pas d'autre moyen de le faire.
Oui, c'est possible, j'ai trouver 2 solutions comment faire et ils sont très similaires
les uns aux autres, le besoin d'u il suffit de définir les paramètres d'url externe url de l'image
PREMIER à l'aide de Javascript SDk:
et SECOND en utilisant jQuery requête Post et FormData:
j'ai utilisé @Владимир Дворник code avec quelques modifications, j'ai eu le même problème et avec ce code ça a très bien fonctionné:
url
puisqu'il ne semble pas être documentées. Mais alors si peu.Photos peuvent être téléchargées sur facebook profil à l'aide d'Ajax comme suit.
Donc, c'est le meilleur moyen de poster la photo d'un facebook profil avec l'API GRAPHIQUE et est le plus simple.
Dans beaucoup de réponse, j'ai vu que l'url de l'image est shwon par la source,de la photo ou de l'image, etc, mais qui ne fonctionne pas.
L'utilisation de la source,l'image ou l'image qui mène à une (#324) Nécessite de télécharger le fichier erreur .
Meilleur moyen d'éviter l'erreur 324.
Seulement @Thiago réponse est la réponse à la question de téléchargement de données via javascript. J'ai trouvé que le Facebook API JS ne couvre pas cette situation.
J'ai aussi brew & testé mon personl solution.
Principales étapes
Code
Utilitaires de Conversion de
Image affichage extrait de
Utilisation
Supplémentaire
L'extraction de la chaîne binaire de représentation d'une toile d'image
D'informations sur la façon de charger la binaryString à partir d'un
input[type=file]
HTML5 Fichier API de lecture de texte et binaire
Notes:
FormData
&File
approche, mais, malheureusement, dans ce cas, il y a beaucoup de incompatilities qui rend le processus plus difficile à utiliser, et vous vous retrouvez conduit de sport autour de la incohérences - donc mon choix a été manuel de rassemblement des données depuis HTTP normes changent rarement 🙂jQuery.ajax
,jQuery.étendre
,jQuery.chaque
Oui, vous pouvez le faire données de validation pour un iframe comme ici, ou vous pouvez utiliser jQuery File Upload .
Le problème est que vous ne pouvez pas obtenir de réponse à partir de l'iframe, à l'aide de plugin, vous pouvez utiliser une page de la poignée.
Exemple: télécharger une vidéo à l'aide de jQuery File Upload
Pour télécharger un fichier à partir de l'ordinateur local avec Javascript essayer HelloJS
Il y a un téléchargement de la démo à http://adodson.com/hello.js/demos/upload.html
https://stackoverflow.com/a/16439233/68210 contient une solution qui fonctionne, si vous avez besoin de télécharger les données de photo de lui-même et ne pas avoir une url.
Cela fonctionne encore. Je l'utilise comme ci-dessous:
Que je pose la question mais si vous avez la moindre idée de si c'est conseillé ou a un gros risque de sécurité par rapport à l'utilisation de PHP api de Facebook.
Cela fonctionne:
Me semble que j'ai un problème similaire, mais les solutions ci-dessus ne fonctionne pas.
J'ai été en utilisant la solution proposée par Arrabi (il suffit d'utiliser la propriété url uniquement) pour afficher des images sans aucun problème. Mes images sont autour de 2 à 3 MO chacun.
Lorsque j'ai migré mon application sur un autre serveur (changement de l'url absolue de mes images dans le post) la méthode gardé de me donner 324 erreurs pour les images ci-dessus autour de 100k taille.
Je pensais que c'était dû à une certaine configuration d'Apache sur ma fin, mais quand j'ai changé de apache pour lighttpd le problème était toujours là.
Les connexions en provenance de Facebook en fait dans mon (apache) journal:
Seulement test2.png réussi.
J'utilise la suite pour partager une photo (certains BitmapData de la Phaser cadre). Il semble fonctionner...
Au cas où quelqu'un cherche encore comment télécharger directement à partir d'une toile à Facebook des photos, cela fonctionne pour moi:
Utiliser
Modifié à partir de: http://gorigins.com/posting-a-canvas-image-to-facebook-and-twitter/