我正在使用他们的oAuth流与Facebook Open Graph进行一些集成,并且在解析他们返回的查询字符串参数方面存在问题。
在我的回调网址上,他们传回带有哈希(#)的“access_token”参数。所以回调将是:
http://mydomain.com/callback.php#access_token=foobar123
其中foobar123是我的访问令牌,我正在尝试解析。
然而,无论我做什么,我的PHP代码都无法看到我是否已经完成了我所知道的每一个调试技巧(甚至使用phpinfo()来完成所有事情)。该网址仅显示为http://mydomain.com/callback.php。这就像网址的其余部分不在那里一样!
此代码不返回任何内容:
$token = $_REQUEST['access_token'];
任何帮助都将不胜感激......我显然错过了一些简单的事情。
答案 0 :(得分:1)
url片段(#之后的部分)永远不会传递给服务器,因此PHP脚本永远不会看到它。 你可以处理它的方法是在回调页面上使用javascript,它将获取url的哈希部分并将其作为查询字符串参数发布到另一个页面。
callback1.php
<script type="text/javascript">
var h = window.location.hash;
window.location = 'http://example.com/callback2.php?'+h;
</script>
callback2.php
<?php
$access = $_GET['access_token'];
?>
虽然我建议您查看Facebook Javascript和PHP SDK,了解您正在尝试做什么。所有基本的oAuth功能都已内置。
答案 1 :(得分:1)
将令牌作为查询字符串传递给服务器,只需转到您的Facebook应用程序设置,然后在“Auth Dialog”选项卡中查找“Authenticated Referrals”部分。
答案 2 :(得分:0)
#character之后的所有内容仅在客户端可用。您可以尝试使用javascript访问此值并将其存储在cookie中或将用户重定向到不同的URL。一些模拟:
<script type="text/javascript">
var token = 'foo'; // In real, get value by parsing URL
window.location ('http://mydomain.com/callback.php?token=' + token);
</script>