Question

Je suis actuellement jouer avec JavaScript Facebook SDK et l'API Scores ( https: //developers.facebook .com / docs / partition / ). J'ai écrit scores et maintenant je veux supprimer des scores une petite application pour enregistrer (post). Affichage (sauvegarde) les fonctionne très bien.

Mon apparence de code comme ceci:

var deleteHighScoreUrl = 'https://graph.facebook.com/'+facebook.user.id+'/scores?access_token='+facebook.application.id+'|'+facebook.application.secret;

jQuery.ajax(
{
  type: 'DELETE',
  async: false,
  url: deleteHighScoreUrl,
  success: function(data, textStatus, jqXHR)
  {
    console.log('Score deleted.');
  }
});

La variable « facebook » est un objet qui contient mes données d'application. Pour HTTP POST, il fonctionne très bien, mais pour HTTP SUPPRIMER je reçois la réponse "NetworkError: 400 Bad Request" dans Firebug (avec Firefox 10). J'ai vu que Firefox envoie d'abord un OPTIONS HTTP (pour voir si elle est autorisée à utiliser HTTP DELETE) ce qui conduit à cette erreur alors j'ai essayé la même chose avec Google Chrome. Google Chrome envoie un véritable HTTP SUPPRIMER qui puis retours:

"XMLHttpRequest ne peut pas charger https://graph.facebook.com/USER_ID/scores?access_token=APP_ID|APP_SECRET . Origine mon_domaine n'est pas autorisé par Access-Control-Allow-Origin ».

Je pense que cela est une question de domaine classique croix, mais comment le résoudre? J'ai ajouté mon domaine à mon application facebook ( https://developers.facebook.com/apps ) et Facebook a un paragraphe qui est appelé « Supprimer scores pour un utilisateur ». Donc, il doit être possible de supprimer les scores (en quelque sorte)?

Était-ce utile?

La solution

En raison de ( XSS Cross-Site-Scripting ) un DELETE HTTP est impossible. Mais vous pouvez envoyer un HTTP POST demande avec le paramètre de requête méthode ? = Supprimer , qui supprime alors le score.

Exemple de code:

Facebook.prototype.deleteUsersHighScore = function()
{
  var deleteHighScoreUrl = 'https://graph.facebook.com/'+this.user.id+'/scores?access_token='+this.application.id+'|'+this.application.secret+'&method=delete';

  jQuery.ajax(
  {
    type: 'POST',
    async: false,
    url: deleteHighScoreUrl,
    success: function(data, textStatus, jqXHR)
    {
      console.log('Score deleted.');
    }
  });
}

Autres conseils

This is the Cross Domain security issue.

The fact that your error contains the message "Origin MY_DOMAIN" would tell me that somewhere in your code you have copied one of Facebook's examples but not changed the value for MY_DOMAIN to the correct domain you are using.

I would check all of your code for the value "MY_DOMAIN".

Please ignore this advice if you have changed the value to hide your actual domain in your question.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top