检查扩展权限与新的Facebook的JavaScript的SDK
有没有办法检查我的应用程序(canvas),如果用户有扩展权限(例如“stream.publish”)?
我只能find老sdk的解决scheme。
谢谢!
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, } ] }
此解决scheme已于2011年底弃用,请使用上面标记为接受的答案
自己find了解决办法
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).'); } });
广义select的function,
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); }); }
如果用户具有所有权限,则调用callback,否则使用false调用callback。
在这里使用FB.Data.query
的回应应该避免这一点,因为Facebook已经完全弃用了FB.Data.query
。 FB.api
(/ me / permissions …)解决scheme似乎是最好的。
您也可以从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
- 在Chrome中,Facebook给出了“不安全的JavaScript尝试访问带有URL的框架”错误
- 应用程序被错误configuration为Facebooklogin:Android Facebook集成问题
- redirect到身份validation对话框 – “发生错误。 请稍后再试”
- 在Flux架构中,您如何pipe理商店生命周期?
- 没有loginbutton的Facebookauthentication
- 无法添加窗口 – 令牌android.os.BinderProxy无效; 你的活动正在运行?
- 如何使用facebookgraphicsAPI显示用户个人资料图片?
- Facebook如何禁用浏览器的集成开发者工具?
- Facebook:不安全的JavaScript问题(document.domain值应该是相同的)