php – 如何在查询字符串中将一些值传递给我的Facebook画布应用程序?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – 如何在查询字符串中将一些值传递给我的Facebook画布应用程序?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2754字,纯文字阅读大概需要4分钟。
内容图文
我开发了一个Facebook画布应用程序,发布给用户新闻源,我希望能够允许用户点击新闻源中的链接,并将其带到我的应用程序以及将在应用程序中显示的一些数据(例如,在查询字符串中传递它.
当我创建将在用户的新闻源上发布的链接时,我将链接字段设置为 –
http://apps.facebook.com/myappname/?datatopass=mydata
这样,当用户单击此链接时,浏览器会将其定向到该链接.但是我无法访问$_GET [‘datatopass’]变量(使用PHP),它似乎是空白的.我已经尝试使用javascript输出window.location变量,我没有看到我传递的查询字符串,即使我在浏览器地址栏中看到它在上面的url.我看到的是我在facebook开发者应用程序中设置的网站网址以及facebook使用的状态和代码参数.它剥离了我的datatopass param,我希望能够在我的应用程序启动时阅读.
那么……我怎样才能传递我想要发送的数据?我知道如果您使用的是signed_request,则会有一个app_data字段,但据我所知,这仅适用于位于页面标签页中的应用.我正在使用iFrame canvas app方法.
当我查看我的apache服务器的访问日志时,我可以看到我的网站URL地址有一个POST条目,附带了我的附加查询字符串 –
my.domain.com 123.456.7.890 - - [23/Feb/2012:14:21:19 +0000] "POST /facebookapp/?datatopass=mydata HTTP/1.1" 200 300 "http://apps.facebook.com/myappname/?datatopass=mydata" "Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko/20100101 Firefox/11.0"
接下来是GET条目 –
my.domain.com 123.456.7.890 - - [23/Feb/2012:14:21:20 +0000] "GET /facebookapp/directory/?state=99226fiawhoidhaoia09809a085d94832&code=ahfakshdlkfhalksj.... HTTP/1.1" 200 27094 "http://my.domain.com/facebookapp/?play=asd" "Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko/20100101 Firefox/11.0"
我道歉,我真的不明白上面做了什么,但希望在帮助解决这个问题时提供额外的信息.
解决方法:
Facebook允许您通过app_data变量传递数据.此变量是已签名请求的一部分,是一个json编码的字符串.所以一个例子可能是这样的:
top.location.href = "http://www.facebook.com/pages/PAGENAME/PAGE_ID?sk=APP_ID&app_data=MYDATA";
此app_data变量成为Facebook签名请求的一部分.更多信息可以在这里找到:http://developers.facebook.com/docs/authentication/signed_request/
您只需解析已签名的请求,然后您可以通过app_data访问数据,如文档所示:
function parse_signed_request($signed_request, $secret) {
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
// decode the data
$sig = base64_url_decode($encoded_sig);
$data = json_decode(base64_url_decode($payload), true);
if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') {
error_log('Unknown algorithm. Expected HMAC-SHA256');
return null;
}
// check sig
$expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true);
if ($sig !== $expected_sig) {
error_log('Bad Signed JSON signature!');
return null;
}
return $data;
}
function base64_url_decode($input) {
return base64_decode(strtr($input, '-_', '+/'));
}
那么你可以调用该函数并像这样访问app_data:
<?php
$signed_request = parse_signed_request($signed_request, $secret);
$signed_request['app_data'] = MYDATA;
?>
内容总结
以上是互联网集市为您收集整理的php – 如何在查询字符串中将一些值传递给我的Facebook画布应用程序?全部内容,希望文章能够帮你解决php – 如何在查询字符串中将一些值传递给我的Facebook画布应用程序?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。