47 votes

vérifier les permissions étendues avec le nouveau sdk facebook javascript

Existe-t-il un moyen de vérifier dans mon application (canvas) si l'utilisateur a une permission étendue (par exemple "stream.publish") ?

Je ne peux trouver une solution que pour l'ancien sdk.

Merci !

68voto

Tim Points 2541

Mise à jour à la fin de 2011 :

FB.api('/me/permissions', function (response) {
    console.log(response);
} );

sortie console :

{
    data: [
        {
            create_note: 1,
            installed: 1,
            photo_upload: 1,
            publish_stream: 1,
            share_item: 1,
            status_update: 1,
            video_upload: 1,
        }
    ]
}

16voto

choise Points 5720

cette solution est obsolète à la fin de 2011, veuillez utiliser la réponse qui est marquée comme acceptée ci-dessus.

j'ai trouvé une solution moi-même

function check_ext_perm(session,callback) {
    var query = FB.Data.query('select publish_stream,read_stream from permissions where uid={0}', session["uid"]);
    query.wait(function(rows) {
        if(rows[0].publish_stream == 1 && rows[0].read_stream == 1) {
            callback(true);
        } else {
            callback(false);
        }
    });
};

ce qui permettra de vérifier publish_stream et read_stream

exemple d'utilisation :

check_ext_perm(response.session, function(isworking) {
   if(isworking) {
      // post something to wall
   } else {
      // ask for login
   }
});

1voto

jmlv21104 Points 64
FB.ui({
    method: 'permissions.request',
    perms: 'user_website',
    display: 'popup'
    },function(response) {
        alert(response.toSource());
        if (response && response.perms) {
            alert('Permissions granted: '+response.perms);
        } else if (!response.perms){
            alert('User did not authorize permission(s).');
        }
});

1voto

tantalor Points 81

Fonction de choise généralisée,

function check_permissions (permissions, uid, cb) {
  FB.Data
    .query('select {0} from permissions where uid={1}', permissions, uid)
    .wait(function (res) {
      if (!res || res.length < 1) return cb(false);
      var row = res[0];
      var aperm = permissions.split(',');
      for (var i = 0; i < aperm.length; i++) {
        if (row[aperm[i]] != 1) return cb(false);
      }
      return cb(true);
  });
}

Appelle le callback avec true si l'utilisateur a toutes les permissions, sinon appelle le callback avec false.

1voto

crowder Points 11

Les réponses ici qui utilisent FB.Data.query sont à éviter à ce stade, car Facebook a déprécié FB.Data.query entièrement. Le site FB.api (/me/permissions ...) semble être la meilleure solution.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X