FACEBOOK GRAPH/rest api: how to LOGIN my OWN USER to update my STATUS with PHP

后端 未结 3 1963
深忆病人
深忆病人 2021-01-17 02:53

I want to update the status of a FAN-PAGE by PHP with the help of the Facebook graph api. google says: doesn\'t work.

Now I want to update my own user status by PHP.

相关标签:
3条回答
  • 2021-01-17 03:24

    my main problem is how to login my own user to the graph api (with php), without using a browser and without funny php workarounds.

    There's no way for you to act on behalf of a user (even your own user) without interacting with him through a browser at least once to get the offline_access.

    How to get the offline_access permission and how to use it from there onward is explained in this answer.

    EDIT:
    Please read the comments! thanks @zerkms!

    0 讨论(0)
  • 2021-01-17 03:24

    You need several things to update your facebook profile or a page's feed: a facebook application (client_id, client_secret), profile_id, and access_token (publish_stream, manage_pages, offline_access permissions)

    You need offline_access because if not, then the access token will expire. If you've read that you don't need offline_access if you already have publish_stream specified, they just meant that you don't need it always.

    To publish a post is easy:

    $data = array(
        'access_token' => $access_token,
        'message' => 'status message',
        );
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_URL, "https://graph.facebook.com/{$profile_id}/feed");
    

    Now how to get the profile_id and access_token, you can use my app post panda, or make your own script. I'll include it here:

    # arvin castro
    # http://codecri.me/
    # January 16, 2011
    
    $client_id     = ''; # application id
    $client_secret = ''; # application secret
    $callbackURL   = 'http://'; # the URL of this script
    $extendedPermissions = 'publish_stream,manage_pages,offline_access';
    
    session_name('facebookoauth');
    session_start();
    
    if(isset($_GET['logout']) and $_SESSION['loggedin']) {
        $_SESSION = array();
        session_destroy();
    }
    
    if(isset($_GET['signin'])) {
    
        # STEP 1: Redirect user to Facebook, to grant permission for our application
        $url = 'https://graph.facebook.com/oauth/authorize?' . xhttp::toQueryString(array(
            'client_id'    => $client_id,
            'redirect_uri' => $callbackURL,
            'scope'        => $extendedPermissions,
        ));
        header("Location: $url", 303);
        die();
    }
    
    if(isset($_GET['code'])) {
    
        # STEP 2: Exchange the code that we have for an access token
        $data = array();
        $data['get'] = array(
            'client_id'     => $client_id,
            'client_secret' => $client_secret,
            'code'      => $_GET['code'],
            'redirect_uri'  => $callbackURL,
            );
    
        $response = xhttp::fetch('https://graph.facebook.com/oauth/access_token', $data);
    
        if($response['successful']) {
    
            $var = xhttp::toQueryArray($response['body']);
            $_SESSION['access_token'] = $var['access_token'];
            $_SESSION['loggedin']     = true;
    
        } else {
            print_r($response['body']);
        }
    }
    
    if($_SESSION['loggedin']) {
        // Get Profile ID
        $data = array();
        $data['get'] = array(
                'access_token'  => $_SESSION['access_token'],
                'fields' => 'id,name,accounts',
                );  
        $response = xhttp::fetch('https://graph.facebook.com/me', $data);
        echo '<pre>';
        print_r(json_decode($response['body'], true));
        echo '</pre>';
    
    } else {
        echo '<a href="?signin">Sign in with Facebook</a>';
    }
    
    ?>
    

    I'm using my cURL wrapper class, xhttp

    0 讨论(0)
  • 2021-01-17 03:30

    In both cases you need to get publish_stream permission http://developers.facebook.com/docs/authentication/permissions

    This can be done with FB.login()

    More information: http://developers.facebook.com/docs/authentication

    After that you can just update status with graph api post: http://developers.facebook.com/docs/reference/api/post

    0 讨论(0)
提交回复
热议问题