我有一个Facebook应用程序,页面标签安装在很多页面上。
我知道我可以解析,服务器端,signed_request并拥有我在页面上需要的所有数据,当前用户等。
但是,我只需要使用客户端JS知道页面ID,甚至是页面URL(因此,无法访问通过POST发送的signed_request,没有PHP或其他服务器端语言)。
有没有办法单独获取这些信息?即使没有签名也没有安全感?
在设置服务器端进程之前,我真的很想知道它是否可行,但即使答案是“不,你也做不到”,请给出一些动机,为什么只能这样做知道当前页面应该是服务器端脚本,如果Facebook提供了一种以不安全的方式了解当前页面的方法,可能会出现哪些安全违规行为。
答案 0 :(得分:1)
在调用authResponse
时,signed_request(http://developers.facebook.com/docs/authentication/signed_request/)是FB.getLoginStatus()
的一部分(https://developers.facebook.com/文档/参考/ JavaScript的/ FB.getLoginStatus /)
{
status: 'connected',
authResponse: {
accessToken: '...',
expiresIn:'...',
signedRequest:'...',
userID:'...'
}
}
在签名的请求中是页面ID。
但是,要实现此功能,您需要向应用验证用户身份。但至少你可以在所有客户端完成,而无需服务器端脚本。另一个值得记住的重要事项是,你需要你的app秘密来解析已签名的请求,并在你的客户端暴露这个极其危险的项目可能会非常危险!
如果您的要求说您既不能授权用户也不能处理已签名的请求服务器端,那么您将无法获得页面ID客户端。
出于安全考虑,请处理signed_request服务器端。 :)
快乐的编码!
答案 1 :(得分:-2)
使用window.top.location
,您可以获得页面标签的完整网址。然后你可以从那里解析ID!