Javascript 检查facebook应用程序的权限
我正在尝试使用facebook API来获得发布到用户墙的权限Javascript 检查facebook应用程序的权限,javascript,facebook,typescript,Javascript,Facebook,Typescript,我正在尝试使用facebook API来获得发布到用户墙的权限 我请求他们允许,如果他们单击“现在不”,我希望它返回到我的页面 如果他们说ok,就会出现一个自定义弹出窗口(facebookPopup) 下面是如果他们点击“共享”按钮会发生什么 public CheckPermissions() { var permsNeeded = ['publish_stream']; // Function that checks needed user permiss
- 我请求他们允许,如果他们单击“现在不”,我希望它返回到我的页面李>
- 如果他们说ok,就会出现一个自定义弹出窗口(facebookPopup)李>
public CheckPermissions() {
var permsNeeded = ['publish_stream'];
// Function that checks needed user permissions
FB.api('/me/permissions', function (response) {
var permsArray = response.data[0];
var permsToPrompt = [];
for (var i in permsNeeded) {
if (permsArray[permsNeeded[i]] == null) {
permsToPrompt.push(permsNeeded[i]);
}
}
if (permsToPrompt.length > 0) {
promptForPerms(permsToPrompt);
}
else {
facebookPopup(response);
}
} );
// Re-prompt user for missing permissions
var promptForPerms = function (perms) {
FB.login(function (response) {
CheckPermissions();
}, { scope: perms.join(',') });
}
}
我遇到的问题是,如果他们单击“Not Now”,它会不断重新编程,因为我正在调用CheckPermissions(),它会点击(permsToPrompt)。我只希望他们在再次单击“共享”按钮时重新安装 以下是您可以使用的:
module facebook {
var grantedPermissions: { [permission: string]: number };
function checkPermissions(callback?: Function): void {
FB.api("/me/permissions", function (response): void {
grantedPermissions = response.data[0];
if (callback) {
callback();
}
});
}
export function init(): void {
FB.getLoginStatus(function(response): void {
if (response.status === "conntected") {
checkPermissions();
}
});
}
export function hasPermission(permission: string): boolean {
return grantedPermissions[permission] == 1;
}
export function getPermission(permission: string, callback?: Function): void {
if (hasPermission(permission)) {
if (callback) {
callback();
}
return;
}
FB.login(function(response): void {
checkPermissions(function() {
if (callback && hasPermission(permission)) {
callback();
}
});
}, { scope: permission });
}
}
启动页面调用时:
facebook.init();
然后您可以这样使用它:
button.addEventListener("click", function(event: Event): void {
getPermission("publish_stream", fucntion() {
// do what ever you want here with the publish_stream permission granted
});
});
请记住,这段代码没有经过测试,我只是编写了它,它没有实现整个登录流程
希望这能有所帮助。为什么要用TypeScript标记它?对不起,我的错误是,应该是Javascript看起来facebook已经删除了发布流权限,并将其与发布操作合并。这意味着您需要在应用程序中添加权限,并立即获得facebook审查批准。顺便说一句,天知道facebook将如何处理这件事。即使要让用户共享带有文本的图像,那么多复杂的编码和facebook SDK也是必须的。不过,使用Google+非常简单:(