PHP代码在Facebook oAuth流程中返回后无法查看查询字符串参数

时间:2010-05-10 09:02:53

标签: php facebook

我正在使用他们的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'];

任何帮助都将不胜感激......我显然错过了一些简单的事情。

3 个答案:

答案 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>