0

我在重定向 uris、签名请求和移动网络 Facebook 应用程序方面遇到问题,我只是无法确定我在哪里搞砸了。

我在 example.com 上有一个画布应用程序,它运行一个使用签名请求来获取其用户数据的应用程序。我决定推出一个移动版本,以便我的移动用户可以使用该应用程序,因此我创建了一个新目录 example.com/m 并制作了一个移动版本。

目前,普通应用程序运行良好,但一旦用户允许 oauth 权限,移动应用程序就会陷入无限循环。我尝试过使用不同的 URL,但我无法弄清楚。对于移动设备,签名的请求是空的,我不知道为什么。

在我的 Facebook 设置中,我将此设置为画布 url:example.com 此设置为移动 web url example.com/m

在我的普通浏览器应用程序中,我使用以下代码从 Facebook 获得宣誓:

$redir = "https://apps.facebook.com/example";
if(isset($_REQUEST["signed_request"]))
{
  $signed_request = $_REQUEST["signed_request"];
  list($encoded_sig, $payload) = explode('.', $signed_request, 2); 
  $data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);
}

if (empty($data["user_id"]))
{
    $fb -> go("https://www.facebook.com/dialog/oauth?client_id={$app["appid"]}&redirect_uri=$redir&scope={$app["permissions"]}&response_type=token");
    exit;
} else 
{
    $fb -> access_token = "access_token=" . $data["oauth_token"];
}

这段代码工作正常,在我的移动版本中我有这段代码(我在这里和那里尝试了很多不同的网址,但仍然无法解决这个问题)

$redir = "https://apps.facebook.com/example/m";
if(isset($_REQUEST["signed_request"]))
{
  $signed_request = $_REQUEST["signed_request"];
  list($encoded_sig, $payload) = explode('.', $signed_request, 2); 
  $data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);
}


if (empty($data["user_id"]))
{
    $fb -> go("https://www.facebook.com/dialog/oauth?client_id={$app["appid"]}&redirect_uri=$redir&scope={$app["permissions"]}&response_type=token");
    exit;
} else 
{
    $fb -> access_token = "access_token=" . $data["oauth_token"];
}
4

0 回答 0