我试图发布为Facebook页面上的页面,因为6天没有成功,这真的令人沮丧,使用新的Facebook SDK 4.0.4。PHP Facebook SDK 4.0作为页面服务器发布到服务器
我在PHP 5.4以下(按照Facebook 4.0 SDK版本的要求)。 我已经阅读了一些所有的facebook文档(不太清楚)https://developers.facebook.com/docs/reference/php/4.0.0。
对于测井在:
<?php
require_once(BaseRoot. '/include/scripts/facebook_php_sdk/src/Facebook/FacebookSession.php');
require_once(BaseRoot. '/include/scripts/facebook_php_sdk/src/Facebook/FacebookRedirectLoginHelper.php');
require_once(BaseRoot. '/include/scripts/facebook_php_sdk/src/Facebook/FacebookRequest.php');
require_once(BaseRoot. '/include/scripts/facebook_php_sdk/src/Facebook/FacebookResponse.php');
require_once(BaseRoot. '/include/scripts/facebook_php_sdk/src/Facebook/FacebookSDKException.php');
require_once(BaseRoot. '/include/scripts/facebook_php_sdk/src/Facebook/FacebookRequestException.php');
require_once(BaseRoot. '/include/scripts/facebook_php_sdk/src/Facebook/FacebookOtherException.php');
require_once(BaseRoot. '/include/scripts/facebook_php_sdk/src/Facebook/FacebookAuthorizationException.php');
require_once(BaseRoot. '/include/scripts/facebook_php_sdk/src/Facebook/GraphObject.php');
require_once(BaseRoot. '/include/scripts/facebook_php_sdk/src/Facebook/GraphSessionInfo.php');
require_once(BaseRoot. '/include/scripts/facebook_php_sdk/src/Facebook/FacebookServerException.php');
use Facebook\FacebookSession;
use Facebook\FacebookRedirectLoginHelper;
use Facebook\FacebookRequest;
use Facebook\FacebookResponse;
use Facebook\FacebookSDKException;
use Facebook\FacebookRequestException;
use Facebook\FacebookOtherException;
use Facebook\FacebookAuthorizationException;
use Facebook\GraphObject;
use Facebook\GraphSessionInfo;
use Facebook\FacebookServerException;
session_start();
// init app with app id and secret
FacebookSession::setDefaultApplication($site["facebook_appid"],$site["facebook_appsecret"]);
// login helper with redirect_uri
$helper = new FacebookRedirectLoginHelper($site["url"].$_SERVER['REQUEST_URI']);
// see if a existing session exists
if (isset($_SESSION) && isset($_SESSION['fb_token'])) {
// create new session from saved access_token
$session = new FacebookSession($_SESSION['fb_token']);
// validate the access_token to make sure it's still valid
try {
if (!$session->validate()) {
$session = null;
}
} catch (Exception $e) {
// catch any exceptions
$session = null;
}
echo '<a href="' . $helper->getLogoutUrl($session, 'http://yourwebsite.com/app/logout.php') . '">Logout</a>';
} else {
// no session exists
try {
$session = $helper->getSessionFromRedirect();
} catch(FacebookRequestException $ex) {
// When Facebook returns an error
} catch(Exception $ex) {
// When validation fails or other local issues
echo $ex->message;
}
echo '<a href="' . $helper->getLoginUrl(array('public_profile', 'email', 'user_friends' , 'publish_stream', 'manage_pages', 'publish_actions', 'status_update', 'user_likes ', 'photo_upload')) . '">Login</a>';
}
///////////////////////////
// SHORT LIVED TOKEN
$request = new FacebookRequest($session, "GET", "/".$site["facebook_appid"]."/accounts?access_token=".$site["facebook_appid"]."|".$site["facebook_appsecret"]."&grant_type=client_credentials");
$response = $request->execute();
// get response
$graphObject = $response->getGraphObject()->asArray();
if (DebugMode) e($graphObject);
$site['facebook_short-lived_access_token'] = $graphObject['data'][0]->access_token;
////////////////////////
///////////////////////////
// LONG LIVED TOKEN
$request = new FacebookRequest($session, "GET", "/oauth/access_token?grant_type=fb_exchange_token&client_id=".$site["facebook_appid"]."&client_secret=".$site["facebook_appsecret"]."&fb_exchange_token=" .$site['facebook_short-lived_access_token']);
$response = $request->execute();
// get response
$graphObject = $response->getGraphObject()->asArray();
if (DebugMode) e($graphObject);
$site['facebook_long-lived_access_token'] = $graphObject['access_token'];
$_SESSION['fb_token'] = $site['facebook_long-lived_access_token'];
if (DebugMode) e($site['facebook_long-lived_access_token']);
?>
与发布:
<?php
require_once(BaseRoot. '/include/scripts/facebook_php_sdk/src/Facebook/FacebookRequest.php');
require_once(BaseRoot. '/include/scripts/facebook_php_sdk/src/Facebook/GraphObject.php');
require_once(BaseRoot. '/include/scripts/facebook_php_sdk/src/Facebook/FacebookSDKException.php');
require_once(BaseRoot. '/include/scripts/facebook_php_sdk/src/Facebook/FacebookRequestException.php');
require_once(BaseRoot. '/include/scripts/facebook_php_sdk/src/Facebook/FacebookPermissionException.php');
use Facebook\FacebookRequest;
use Facebook\GraphObject;
use Facebook\FacebookRequestException;
use Facebook\FacebookSDKException;
use Facebook\FacebookPermissionException;
if($session) {
try {
$response = (new FacebookRequest(
$session, 'POST', "/".$site["facebook_page_id"]."/feed",
array(
'access_token' => $_SESSION['fb_token'],
'link' => $site["url"].'/url',
'name' => 'link name',
'caption' => 'link caption',
'description' => 'link description',
'picture' => $site["url"].'/alpha.png',
'message' => 'User provided message'
)
))->execute()->getGraphObject();
echo "Posted with id: " . $response->getProperty('id');
} catch(FacebookRequestException $e) {
echo "Exception occured, code: " . $e->getCode();
echo " with message: " . $e->getMessage();
}
}
?>
我第一次得到一个会话ID,然后请求并获得一个短暂的令牌,与我请求并获得一个长期的令牌(60天有效期)。然后我使用最后获取的令牌继续发布脚本。 我提交了一个帖子,它返回了一个后ID,就像它的工作,但没有在页面上,没有在我的个人Facebook历史。
我的应用处于开发模式,并没有因Facebook的审查,但它似乎没有必要了:http://www.nextscripts.com/known-issues/facebook-issues/
任何想法,我错了?
没有人可以帮助...这个问题真的没有任何解决方案吗? 40天和274的观点后,仍然没有答案的阴影... – Matbe81