есть ли способ проверить мое приложение (холст), если пользователь имеет расширенное разрешение (например, stream.publish)?
i может найти решение для старого sdk.
спасибо!
есть ли способ проверить мое приложение (холст), если пользователь имеет расширенное разрешение (например, stream.publish)?
i может найти решение для старого sdk.
спасибо!
Обновление в конце 2011 года:
FB.api('/me/permissions', function (response) {
console.log(response);
} );
консольный вывод:
{
data: [
{
create_note: 1,
installed: 1,
photo_upload: 1,
publish_stream: 1,
share_item: 1,
status_update: 1,
video_upload: 1,
}
]
}
нашел решение самостоятельно
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);
}
});
};
это проверит для publish_stream
и read_stream
пример использования:
check_ext_perm(response.session, function(isworking) {
if(isworking) {
// post something to wall
} else {
// ask for login
}
});
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).');
}
});
Обобщенная функция выбора,
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);
});
}
Вызывает обратный вызов с истинным, если пользователь имеет все разрешения, иначе вызывает обратный вызов с ложным.
Ответы, в которых используется FB.Data.query
, следует избегать как этот пункт, так как Facebook полностью устарел FB.Data.query
. Решение FB.api
(/me/permissions...) кажется лучшим.
Вы также можете получить разрешения от FB.login:
FB.login(function(response) {
// handle the response
}, {
scope: 'publish_actions',
return_scopes: true
});
См. https://developers.facebook.com/docs/reference/javascript/FB.login/v2.1#options