- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在显示 iframe 登录以请求扩展权限之前检查已登录用户的权限,但 iframe 弹出窗口被浏览器阻止(ff,chrome 测试)。我想避免这种情况,我很确定它是因为 js 函数的结果是“嵌套”的——我的 js 聪明是有限的,所以请原谅。
我猜如果我可以保留原始函数中的所有内容而不传递结果,浏览器仍会将登录 iframe 视为“用户启动”而不是阻止。
但我无法做到这一点 - 例如为什么以下会导致 data = undefined。
var data = FB.api(
{
method: 'fql.query',
query: 'SELECT create_event FROM permissions WHERE uid=' + response.session.uid
});
alert(data); // = undefined
我当前的完整代码是:
<button id="myButton" >Test Publish Event</button>
<script>
$('#myButton').bind('click', function() {
FB.getLoginStatus(function(response) {
if (response.session) {
// logged in and connected user, someone you know
FB.api(
{
method: 'fql.query',
query: 'SELECT create_event FROM permissions WHERE uid=' + response.session.uid
},
function(response) {
if(response[0].create_event == 1) {
alert('permission granted');
} else {
alert('permission absent');
FB.login( function(response) {if (response.session) {
handleSessionResponse(response);
if (response.perms) {
// user is logged in and granted some permissions.
// perms is a comma separated list of granted permissions
alert(response.perms);
} else {
// user is logged in, but did not grant any permissions
}
} else {
// user is not logged in
}
}, {perms:'create_event,rsvp_event'});
}
}
);
</script>
最佳答案
耶!同样的问题(好吧,不是同样的问题,而是相同的所需功能)困扰了我很多,但在对各种来源进行了数小时的研究后,我终于找到了解决方案!
第一
var data = FB.api(
这是错误的!因为所有 fb 请求都是异步执行的,并且检索数据值的唯一方法是在请求执行后在该请求内。例如
FB.api(
{
method: 'fql.query',
query: 'SELECT create_event FROM permissions WHERE uid=' + response.session.uid
},function(response){
This function will run after the request is finished and ONLY inside here you can read the results data
ex alert(response.data);
});
}
});
出于安全原因,chrome 阻止了第二个您的权限请求弹出窗口(firefox 允许其他浏览器要求允许或不允许)
“只有从用户操作事件(如 .onclick)打开时才允许弹出窗口”因此,您可以将该函数附加到要允许的 .onclick 事件。
3rd 我检查用户是否具有使用您的应用程序所需的权限的解决方案是:
FB.getLoginStatus(function(response) {
if (response.status.toString().indexOf("connected")>-1) {
initAll();
} else {
requestPermisions proceedure
}
此函数检查用户是否已连接并以其他方式向您的应用授予权限 response.status = "unknown"返回。
现在....
权限弹出框问题有2种解决方法。
第一个解决方案 = 将 FB.login() 函数附加到按钮的 onclick 事件。例如。
ifUserNotgrandedPermisions{document.getElementByid("aLogInButton").onclick = function(){
FB.login(....blah blah blah);
};
第二个解决方案和我实现的一个是将 iFrame 重定向到请求权限页面,而不是弹出
下面是一个完整的解决方案,它检查用户是否已登录并授予权限...如果没有,它会要求用户登录然后请求权限(如果已登录,只需询问权限)(如果有权限,则只需登录) )
FB.init({appId: 'YourAPPID', status: true, cookie: true, xfbml: true, oauth : true});
FB.getLoginStatus(function(response) {
if (response.status.toString().indexOf("connected")>-1) {
initAll(); //User is connected and granted perms Good to go!
} else {
//top.location 更改浏览器 url 而不是 iframe 的 url
//这个 url 是专门为你的应用请求 perms 的。您更改权限和您的 appID
//redirect_uri = 将此更改为您的应用程序 Canvas 页面
top.location=window.location="http://www.facebook.com/dialog/oauth/?scope=read_stream,publish_stream,friends_photos,friends_activities&client_id="yourAPPID(nobrackets)"&redirect_uri=http://apps.facebook.com/filtered_feed/&response_type=code";}});};
关于 Facebook JS SDK : Check permissions before Login PopUp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4048385/
我从 ssh 收到以下错误: Permissions 0777 for '/Users/username/.ssh/id_rsa' are too open. It is recommended th
我正在使用 WSL1(Windows Linux 子系统)和 Ubuntu 20.04.1 LTS 开发 Win10。我有一个 Samba (1.0) 网络共享,我想通过我的 Ubuntu 终端在上面
文件权限 我有一个文件 data.tgz我想解压缩。 -rw-r--r-- 1 username group 20342951248 mai 18 11:50 data.tgz 目录权限 文件所在的目
我正在尝试设置一些其他组不应该看到的组维护文件夹。目前,我通过取消单击@@sharing 选项卡中的“从更高级别继承权限”复选框来实现这一点,但我想自动执行此操作。 我在文档或谷歌搜索中找不到任何关于
在 Android 4 下,以下简单的 native C 代码行失败并出现 Permission denied 错误 when not run as 根: online_socket = socket
(我是 tortoise SVN 的新手) 我的乌龟 SVN 中有 2 个文件夹。每个人都需要一组不同的授权(我不想有权访问第一个文件夹的人对第二个文件夹具有读/写访问权限。 我怎样才能完成它?我注意
我用 tar -zxvf tarFile.tar.gz解压tarFile,但有错误提示tar: subfile :Cannot open: Permission denied . 我是root用户,权
我是 WAMP 的新手我今天刚刚安装了它。 设置进行得很顺利,本地主机似乎可以工作,但是当我尝试访问 phpMyAdmin 时我收到此错误: Forbidden You don't have perm
我想做的是从文件夹内的文件夹中获取 .mp3 文件。多次。 一切都很完美,除了当我尝试将文件复制到新文件夹(已经存在)时,它给出:[Errno 13]权限被拒绝: import os, shutil
我是 WAMP 的新手我今天刚刚安装了它。 设置进行得很顺利,本地主机似乎可以工作,但是当我尝试访问 phpMyAdmin 时我收到此错误: Forbidden You don't have perm
我正在开发一个应用程序,我在其中使用塔位置跟踪位置。所以我使用地理定位 api 来跟踪位置并访问手机状态以获取网络详细信息。 这很好用,突然间它开始给出 LOCATION_HARDWARE 权限的安全
这两种语法有什么区别。android:uses-permission 和 uses-permission。例如: 当我创建一个从存储中读取的 Activity 时,Android Studio 自
我正在尝试使用新的 GrantPermissionRule这是最新支持库的一部分。 在我的 list 中,我声明如下: 在我的代码中,我调用: @Rule public GrantPermissio
有没有navigator.permissions.query 的替代方案 Permissions API 查询以检查 geolocation 权限。导致它仍处于工作草案中并且浏览器兼容性较差。 W3C
这个错误真的真的很奇怪,我不知道如何重现它以及如何修复它,因为我进行了大量搜索,但没有任何用处。 这是堆栈跟踪: Stack Trace _______________________________
我正在尝试在 ubuntu 16.4 上安装 MaryTTS。 但是当我上线时 sudo -u mary git clone https://github.com/marytts/marytts.gi
在我们基于 Symfony2 的应用程序中,我们希望创建一个列表,列出系统中哪些用户对给定域对象具有权限。我们正在使用 ACL,我们的直接直觉是查看从相关域对象的 ACLProvider 返回的 AC
我今天收到这封邮件,但我没有使用 Admob 广告,而是使用 applovin 和 Facebook,我必须添加此权限还是仅适用于他们使用 Admob 的开发者? 即使没有像我一样的admob,每个人
我有一个 Jenkins 用户,我想授予其对 Jenkins 实例运行远程 CLI 的权限。第一个命令是获取 config.xml: java -jar jenkins-cli.jar -s http
我今天收到这封邮件,但我没有使用 Admob 广告,而是使用 applovin 和 Facebook,我必须添加此权限还是仅适用于他们使用 Admob 的开发者? 即使没有像我一样的admob,每个人
我是一名优秀的程序员,十分优秀!