Facebook Uncaught Oauthexception: an Active Access Token Must Be Used to Query Information About the Current User

facebook Uncaught OAuthException: An active access token must be used to query information about the current user

Just check for the current Facebook user id $user and if it returned null then you need to reauthorize the user (or use the custom $_SESSION user id value - not recommended)

require 'facebook/src/facebook.php';

// Create our Application instance (replace this with your appId and secret).
$facebook = new Facebook(array(
'appId' => 'APP_ID',
'secret' => 'APP_SECRET',
));

$user = $facebook->getUser();

$photo_details = array('message' => 'my place');
$file='photos/my.jpg'; //Example image file
$photo_details['image'] = '@' . realpath($file);

if ($user) {
try {
// We have a valid FB session, so we can use 'me'
$upload_photo = $facebook->api('/me/photos', 'post', $photo_details);
} catch (FacebookApiException $e) {
error_log($e);
}
}

// login or logout url will be needed depending on current user state.
if ($user) {
$logoutUrl = $facebook->getLogoutUrl();
} else {
// redirect to Facebook login to get a fresh user access_token
$loginUrl = $facebook->getLoginUrl();
header('Location: ' . $loginUrl);
}

I've written a tutorial on how to upload a picture to the user's wall.

OAuthException : An active access token must be used to query information about the current user

You must ensure that your access token is active. Or maybe you're in logout condition. Or try to clean the cookies and cache from your browser (ctrl+shift+del)

OOAuthException: An active access token must be used to query information about the current user

You cannot fetch the endpoint me with an app access token. You need a user or page access token.

Facebook. Fatal error: Uncaught OAuthException: An active access token must be used to query information about the current user

In this case it's not even getting to your $facebook->getUser() call -- it's throwing an exception as soon as it reaches this line:

$user_profile = $facebook->api('/me','GET');

$facebook->api() is a bit of a tricky thing to work with because it throws an exception immediately if it doesn't know who "/me" is...even if you try to fix it later.

The trick, I think, is to wrap the entire thing in a try...catch block. Like so:

<?php

require_once('images/facebook.php');

$facebook = new Facebook(array(
'appId' => '456080124457246',
'secret' => 'xxxxx',
));

try {
$user_profile = $facebook->api('/me','GET');
# Get User ID
$user = $facebook->getUser();

if ($user) {
try {
# Photo Caption
$photoCaption = $user_profile['name'] . ' patarimų plaukams sužinojo čia http://goo.gl/otwhf';

# Absolute Path to your image.
$imageUrl = 'http://padekime.wu.lt/plaukai/images/PlaukaiNeuzvedus.jpg'; // Example URL

# Post Data for Photos API
$post_data = array(
'message' => $photoCaption,
'url' => $imageUrl

);

$apiResponse = $facebook->api('/me/photos', 'POST', $post_data);

} catch (FacebookApiException $e) {
error_log($e);
}
} else {
$loginUrl = $facebook->getLoginUrl( array(
'scope' => 'publish_stream,photo_upload'
));
echo("<script>top.location.href = '" . $loginUrl . "';</script>");
}

} catch (Exception $e) {
$loginUrl = $facebook->getLoginUrl( array(
'scope' => 'publish_stream,photo_upload'
));
echo("<script>top.location.href = '" . $loginUrl . "';</script>");
}

?>

That'll redirect the user to the login url pretty much immediately, then come back with everything in tow. You don't have to set the accessToken with this setup.

This may actually unnecessarily repeat some functionality, but hopefully it's something to start with.

By the way, for what it's worth the offline_access permission is being phased out.



Related Topics



Leave a reply



Submit