Php 如何将自定义文本框中的数据发布到facebook用户时间线

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

如果我直接传递数据变量,这段代码可以工作,但我需要来自用户输入字段的数据

$data=[“message”=>“Testing post”]

$profile_request=$fb->post('/me/feed',$data)

上面的代码是有效的,如果我从POST方法中得到它就不起作用了 任何建议都将不胜感激

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一开始就没有什么意义。