【发布时间】:2016-07-31 14:43:00
【问题描述】:
我已成功开发 [在 iFrame 中运行的] Facebook 画布应用程序,但现在我想转移到网站平台。
所以我的应用程序在我的网站上运行,而不是在 iFrame 内。
需要做出哪些改变?
我的应用程序基本上对个人资料照片执行简单的效果,然后将其显示给用户。
[我尝试将平台从 Canvas 更改为 Website,但没有成功。它显示 INVALID SIGNED REQUEST ERROR...]
这是一个在他们的网站上运行应用程序的示例网站,而不是在 iFrame 内 http://in.testfun.net/
我的基于画布的应用代码
config.php
<?php
$fb = new Facebook\Facebook([
'app_id' => '**************',
'app_secret' => '1ef4838500bb8c401a18833dbcdfa27e',
'default_graph_version' => 'v2.6', ]);
$helper = $fb->getCanvasHelper();
$permissions = ['public_profile','user_posts','user_location'];
$fbURL = 'https://apps.facebook.com/mytestapp';
$URL = 'https://localhost/apps/testApp/';
?>
登录回调.php
<?php
session_start();
require_once '../fbsdk/autoload.php';
include 'config.php';
try {
$accessToken = $helper->getAccessToken();
}
catch(FacebookExceptionsFacebookResponseException $e) {
echo 'Graph returned an error: ' . $e->getMessage(); exit;
}
catch(FacebookExceptionsFacebookSDKException $e) {
echo 'Facebook SDK returned an error: ' . $e->getMessage(); exit;
}
if (isset($accessToken)) {
$_SESSION['facebook_access_token'] = (string)$accessToken; header('Location: ' . $fbURL . $app);
exit;
}
else { echo 'Oops unknown error!'; }
?>
index.php
<?php
session_start();
require_once '../fbsdk/autoload.php';
require_once '../fbsdk/FacebookRequest.php';
use Facebook\FacebookRequest;
include 'config.php';
try {
$accessToken = $helper->getAccessToken();
$_SESSION['facebook_access_token'] = $accessToken;
} catch(Facebook\Exceptions\FacebookResponseException $e) {
echo 'Graph returned an error: ' . $e->getMessage(); exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
echo 'Facebook SDK returned an error: ' . $e->getMessage(); exit;
}
if (isset($accessToken)) {
if (isset($_SESSION['facebook_access_token'])) {
$fb->setDefaultAccessToken($_SESSION['facebook_access_token']);
} else {
$_SESSION['facebook_access_token'] = (string) $accessToken;
$oAuth2Client = $fb->getOAuth2Client();
$longLivedAccessToken = $oAuth2Client->getLongLivedAccessToken($_SESSION['facebook_access_token']);
$_SESSION['facebook_access_token'] = (string) $longLivedAccessToken;
$fb->setDefaultAccessToken($_SESSION['facebook_access_token']);
}
}
【问题讨论】:
-
外部网站应用没有signed_request。所以去改变你的代码期望的任何部分,并输出这个错误信息。
-
@CBroe 请多解释一点,举个例子更好。谢谢
-
这里没有人知道你的代码。我只能猜测您使用了 PHP SDK 的登录帮助程序之一 - 因此您需要将该部分切换为适当的部分(重定向帮助程序或 javascript 帮助程序;这两个文档都有示例。)
-
@CBroe 我已经添加了代码。请检查和建议。 &thnx
-
@CBroe 我还在等兄弟。需要帮助:(
标签: php facebook facebook-graph-api web facebook-php-sdk