Php 如何将自定义文本框中的数据发布到facebook用户时间线
如果我直接传递数据变量,这段代码可以工作,但我需要来自用户输入字段的数据 $data=[“message”=>“Testing post”] $profile_request=$fb->post('/me/feed',$data) 上面的代码是有效的,如果我从POST方法中得到它就不起作用了 任何建议都将不胜感激Php 如何将自定义文本框中的数据发布到facebook用户时间线,php,facebook,facebook-graph-api,facebook-php-sdk,Php,Facebook,Facebook Graph Api,Facebook Php Sdk,如果我直接传递数据变量,这段代码可以工作,但我需要来自用户输入字段的数据 $data=[“message”=>“Testing post”] $profile_request=$fb->post('/me/feed',$data) 上面的代码是有效的,如果我从POST方法中得到它就不起作用了 任何建议都将不胜感激 index.php <?php require_once 'appconfig.php'; $permissions = ['email
index.php
<?php
require_once 'appconfig.php';
$permissions = ['email','publish_actions'];
$loginUrl = $helper->getLoginUrl('http://localhost/Api-Integeration/fbpost/logged.php', $permissions);
//echo '<a href="' . $loginUrl . '">Post to Facebook!</a>';
?>
<!DOCTYPE html>
<html>
<head>
<title>Post to user timeline</title>
</head>
<body>
<form action="<?php echo $loginUrl; ?>" method="POST" accept-charset="utf-8">
<textarea rows="6" name="message" style="width:40%;" placeholder="Enter Post Data"></textarea>
<br />
<input type="submit" value="POST TO FACEBOOK" name="submit">
</form>
</body>
</html>
logged.php
<?php
require_once 'appconfig.php';
try {
if (isset($_SESSION['facebook_access_token'])) {
$accessToken = $_SESSION['facebook_access_token'];
} else {
$accessToken = $helper->getAccessToken();
}
} catch(Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
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 {
// getting short-lived access token
$_SESSION['facebook_access_token'] = (string) $accessToken;
// OAuth 2.0 client handler
$oAuth2Client = $fb->getOAuth2Client();
// Exchanges a short-lived access token for a long-lived one
$longLivedAccessToken = $oAuth2Client->getLongLivedAccessToken($_SESSION['facebook_access_token']);
$_SESSION['facebook_access_token'] = (string) $longLivedAccessToken;
// setting default access token to be used in script
$fb->setDefaultAccessToken($_SESSION['facebook_access_token']);
}
// redirect the user back to the same page if it has "code" GET variable
if (isset($_GET['code'])) {
header('Location: logged.php');
}
/*user messaegs*/
$usermsg = $_POST['message'];
$data = ["message" => $usermsg];
try {
$profile_request = $fb->post('/me/feed', $data);
$user = $profile_request->getGraphUser();
} catch(Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
echo 'Graph returned an error: ' . $e->getMessage();
session_destroy();
// redirecting user back to app login page
header('Location: ./');
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
// Now you can redirect to another page and use the access token from $_SESSION['facebook_access_token']
} else{
print_r($_POST);
echo "not set";
}
?>
index.php
发布到用户时间表
服务器端登录流程的工作原理是将用户的浏览器重定向到Facebook,然后再从Facebook返回到您的应用程序。此时,没有POST数据,因为浏览器会发出GET请求以遵循这些重定向。您需要通过登录流将该值作为GET参数传递,以便在用户登录到重定向URI时该值仍然存在,或者将其存储到会话中。或者,更好的是,您可以将登录和输入消息的表单分离。使用POST调用FB登录URL一开始就没有什么意义。服务器端登录流的工作原理是将用户的浏览器重定向到Facebook,然后再从那里返回到您的应用程序。此时,没有POST数据,因为浏览器会发出GET请求以遵循这些重定向。您需要通过登录流将该值作为GET参数传递,以便在用户登录到重定向URI时该值仍然存在,或者将其存储到会话中。或者,更好的是,您可以将登录和输入消息的表单分离。使用POST调用FB登录URL一开始就没有什么意义。