admin管理员组文章数量:1312852
I have defined an access token and have the required permissions to 'like' a facebook page, but firebug keeps giving me the error in the title. Please don't mark this post as duplicate, because I've looked on the posts regarding the problem and I couldn't find an answer that would fit my particular case in any way. I can't understand why or how should I solve it. My code is the following:
utils.php
<?php
require_once('sdk/src/facebook.php');
require_once("AppInfo.php");
/**
* @return the value at $index in $array or $default if $index is not set.
*/
function idx(array $array, $key, $default = null) {
return array_key_exists($key, $array) ? $array[$key] : $default;
}
function he($str) {
return htmlentities($str, ENT_QUOTES, "UTF-8");
}
$facebook = new Facebook(array(
'appId' => AppInfo::appID(),
'secret' => AppInfo::appSecret(),
'sharedSession' => true,
'trustForwarded' => true,
'file_upload' =>true
));
$user_id = $facebook->getUser();
if($user_id)
{
$logoutUrl =$facebook->getLogoutUrl();
}
else
{
$loginUrl=$facebook->getLoginUrl();
}
if ($user_id) {
try {
// Fetch the viewer's basic information
$user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) {
// If the call fails we check if we still have a user. The user will be
// cleared if the error is because of an invalid accesstoken
if (!$facebook->getUser()) {
header('Location: '. AppInfo::getUrl($_SERVER['REQUEST_URI']));
exit();
}
}
}
?>
likes.php
<?php
require_once("sdk/src/facebook.php");
require_once("utils.php");
require_once("AppInfo.php");
$permissions = $facebook->api('/me/permissions ');
if( array_key_exists('publish_actions', $permissions['data'][0]) ) {
// Permission is granted!
// Do the related task
//$post_id = $facebook->api('/me/feed', 'post', array('message'=>'Hello World!'));
} else {
// We don't have the permission
// Alert the user or ask for the permission!
header( "Location: " . $facebook->getLoginUrl(array("scope" => "publish_actions")) );
}
?>
<!DOCTYPE html>
<html xmlns:fb="">
<head>
<style type="text/css">
li{
vertical-align: middle;
padding-top: 1em;
}
</style>
<div id="fb-root"></div>
<script type="text/javascript" src="/javascript/jquery-1.7.1.min.js"></script>
<script type="text/javascript">
(function(d, debug){
var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook/en_US/all" + (debug ? "/debug" : "") + ".js";
ref.parentNode.insertBefore(js, ref);
}(document, false)); //loads javascript-sdk
$(function() {
// Set up so we handle click on the buttons
$('#like_but').click(function(){
FB.api(
'me/og.likes',
'post',
{
object: ""
},
function(response) {
alert(response);
});});}); // they are closed properly, don't bother checking it. (!) Should like the 'object'
</script>
</head>
<body>
<div style="position:fixed; display:block">
<input type="button" value="Like" id="like_but"/>
</div>
</body>
</html>
Does anyone have any idea why does the error appear or how can I solve this? Any hint would be appreciated.
Note: the user logs in from another index.php, but I won't post it here, because there is no problem with it, and the access token is still gathered in utils.php. Also when checking if permissions are granted in "likes.php", it works fine.
I have defined an access token and have the required permissions to 'like' a facebook page, but firebug keeps giving me the error in the title. Please don't mark this post as duplicate, because I've looked on the posts regarding the problem and I couldn't find an answer that would fit my particular case in any way. I can't understand why or how should I solve it. My code is the following:
utils.php
<?php
require_once('sdk/src/facebook.php');
require_once("AppInfo.php");
/**
* @return the value at $index in $array or $default if $index is not set.
*/
function idx(array $array, $key, $default = null) {
return array_key_exists($key, $array) ? $array[$key] : $default;
}
function he($str) {
return htmlentities($str, ENT_QUOTES, "UTF-8");
}
$facebook = new Facebook(array(
'appId' => AppInfo::appID(),
'secret' => AppInfo::appSecret(),
'sharedSession' => true,
'trustForwarded' => true,
'file_upload' =>true
));
$user_id = $facebook->getUser();
if($user_id)
{
$logoutUrl =$facebook->getLogoutUrl();
}
else
{
$loginUrl=$facebook->getLoginUrl();
}
if ($user_id) {
try {
// Fetch the viewer's basic information
$user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) {
// If the call fails we check if we still have a user. The user will be
// cleared if the error is because of an invalid accesstoken
if (!$facebook->getUser()) {
header('Location: '. AppInfo::getUrl($_SERVER['REQUEST_URI']));
exit();
}
}
}
?>
likes.php
<?php
require_once("sdk/src/facebook.php");
require_once("utils.php");
require_once("AppInfo.php");
$permissions = $facebook->api('/me/permissions ');
if( array_key_exists('publish_actions', $permissions['data'][0]) ) {
// Permission is granted!
// Do the related task
//$post_id = $facebook->api('/me/feed', 'post', array('message'=>'Hello World!'));
} else {
// We don't have the permission
// Alert the user or ask for the permission!
header( "Location: " . $facebook->getLoginUrl(array("scope" => "publish_actions")) );
}
?>
<!DOCTYPE html>
<html xmlns:fb="http://ogp.me/ns/fb#">
<head>
<style type="text/css">
li{
vertical-align: middle;
padding-top: 1em;
}
</style>
<div id="fb-root"></div>
<script type="text/javascript" src="/javascript/jquery-1.7.1.min.js"></script>
<script type="text/javascript">
(function(d, debug){
var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook/en_US/all" + (debug ? "/debug" : "") + ".js";
ref.parentNode.insertBefore(js, ref);
}(document, false)); //loads javascript-sdk
$(function() {
// Set up so we handle click on the buttons
$('#like_but').click(function(){
FB.api(
'me/og.likes',
'post',
{
object: "http://facebook./216730015024772"
},
function(response) {
alert(response);
});});}); // they are closed properly, don't bother checking it. (!) Should like the 'object'
</script>
</head>
<body>
<div style="position:fixed; display:block">
<input type="button" value="Like" id="like_but"/>
</div>
</body>
</html>
Does anyone have any idea why does the error appear or how can I solve this? Any hint would be appreciated.
Note: the user logs in from another index.php, but I won't post it here, because there is no problem with it, and the access token is still gathered in utils.php. Also when checking if permissions are granted in "likes.php", it works fine.
Share Improve this question edited Mar 17, 2013 at 20:49 Julian H. Lam 26.1k13 gold badges50 silver badges74 bronze badges asked Mar 7, 2013 at 20:41 MihaiBMihaiB 1391 gold badge4 silver badges17 bronze badges1 Answer
Reset to default 8 +100Assuming that the access_token
you received from Facebook is indeed valid... it looks like your implementation of the Facebook javascript SDK isn't plete.
You've included the library loader, but you don't have an FB.init();
section to initialize the library. I see no reference to any appId
in the second code block, so there's way for Facebook to know what app your code is in reference to.
Please refer to the following documentation from Facebook.
Specifically, this may solve your problem:
window.fbAsyncInit = function() {
// init the FB JS SDK
FB.init({
appId : 'YOUR_APP_ID', // App ID from the App Dashboard
channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel File for x-domain munication
status : true, // check the login status upon init?
cookie : true, // set sessions cookies to allow your server to access the session?
xfbml : true // parse XFBML tags on this page?
});
// Additional initialization code such as adding Event Listeners goes here
document.getElementById('like_but').addEventListener('click', function() {
FB.api('me/og.likes', 'post', {
object: "http://facebook./216730015024772"
}, function(response) {
console.log(response);
});
}, false);
};
(function(d, debug){
var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook/en_US/all" + (debug ? "/debug" : "") + ".js";
ref.parentNode.insertBefore(js, ref);
}(document, /*debug*/ false));
本文标签:
版权声明:本文标题:php - An active access token must be used to query information about the current user | Access token seems to be valid - Stack O 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1741854497a2401260.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论