php - Posting to Facebook via Website Application - Internal Server Error -
i using following code user's posts, app_id, , app_secret replaced appropriate fields.
<?php session_start(); require_once __dir__ . '/src/facebook/autoload.php'; $fb = new facebook\facebook([ 'app_id' => 'app_id', 'app_secret' => 'app_secret', 'default_graph_version' => 'v2.5',]); $helper = $fb->getcanvashelper(); $permissions = ['user_posts']; // optionnal try { if (isset($_session['facebook_access_token'])) { $accesstoken = $_session['facebook_access_token']; } else { $accesstoken = $helper->getaccesstoken(); } } catch(facebook\exceptions\facebookresponseexception $e) { // when graph returns error echo 'graph returned error: ' . $e->getmessage(); exit; } catch(facebook\exceptions\facebooksdkexception $e) { // when validation fails or other local issues echo 'facebook sdk returned 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; // oauth 2.0 client handler $oauth2client = $fb->getoauth2client(); // exchanges short-lived access token long-lived 1 $longlivedaccesstoken = $oauth2client->getlonglivedaccesstoken($_session['facebook_access_token']); $_session['facebook_access_token'] = (string) $longlivedaccesstoken; $fb->setdefaultaccesstoken($_session['facebook_access_token']); } // validating access token try { $request = $fb->get('/me'); } catch(facebook\exceptions\facebookresponseexception $e) { // when graph returns error if ($e->getcode() == 190) { unset($_session['facebook_access_token']); $helper = $fb->getredirectloginhelper(); $loginurl = $helper->getloginurl('https://apps.facebook.com/app_namespace/', $permissions); echo "<script>window.top.location.href='".$loginurl."'</script>"; exit; } } catch(facebook\exceptions\facebooksdkexception $e) { // when validation fails or other local issues echo 'facebook sdk returned error: ' . $e->getmessage(); exit; } // getting posts published user try { $posts_request = $fb->get('/me/posts?limit=500'); } catch(facebook\exceptions\facebookresponseexception $e) { // when graph returns error echo 'graph returned error: ' . $e->getmessage(); exit; } catch(facebook\exceptions\facebooksdkexception $e) { // when validation fails or other local issues echo 'facebook sdk returned error: ' . $e->getmessage(); exit; } $total_posts = array(); $posts_response = $posts_request->getgraphedge(); if($fb->next($posts_response)) { $response_array = $posts_response->asarray(); $total_posts = array_merge($total_posts, $response_array); while ($posts_response = $fb->next($posts_response)) { $response_array = $posts_response->asarray(); $total_posts = array_merge($total_posts, $response_array); } print_r($total_posts); } else { $posts_response = $posts_request->getgraphedge()->asarray(); print_r($posts_response); } // can redirect page , use access token $_session['facebook_access_token'] } else { $helper = $fb->getredirectloginhelper(); $loginurl = $helper->getloginurl('https://apps.facebook.com/app_namespace/', $permissions); echo "<script>window.top.location.href='".$loginurl."'</script>";
}
when run locally on command line (php post.php), following:
<script>window.top.location.href='https://www.facebook.com/v2.5/dialog/oauth?client_id=843019182480437&state=bb8b088f64641baed7d1e4de734ad19b&response_type=code&sdk=php-sdk-5.1.2&redirect_uri=https%3a%2f%2fapps.facebook.com%2fapp_namespace%2f&scope=user_posts
which means syntax correct. when go link following notification facebook:
given url not allowed application configuration: 1 or more of given urls not allowed app's settings. must match website url or canvas url, or domain must subdomain of 1 of app's domains.
i have set website url appropriate value. when try access post.php server internal server error.
has else experienced before?
Comments
Post a Comment