【问题标题】:Facebook app on website platform PHP - Graph API网站平台 PHP 上的 Facebook 应用程序 - 图形 API
【发布时间】: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


【解决方案1】:

据我了解,您想使用 OAuth 打开 facebook 登录页面。

https://developers.facebook.com/docs/php/howto/example_facebook_login

【讨论】:

  • 另外请注意您在 facebook 上有 2 个不同的应用程序。其中之一只是用于开发环境。另一个用于生产环境。当您将代码用于生产时,更改生产模式配置的 app_id 和 secret id。然后在 facebook 上设置启用您的应用程序。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-19
  • 2016-09-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多