У меня есть следующий код в моем index.php:Facebook Application перенаправлять
$config = array(
'appId' => AppInfo::appID(),
'secret' => AppInfo::appSecret(),
'cookie' => true
);
$facebook = new Facebook($config);
$app_name = "AppName";
$fbPermissions = 'email';
$validUser = 1;
$fbuser = $facebook->getUser(); // get user
$fbname = "";
$fbmail = "";
$fbid = 0;
$user_profile = null;
if(!$fbuser)
{
$validUser = 0;
}
else
{
try {
$user_profile = $facebook->api('/me'); //user profile
$user_permissions = $facebook->api("/me/permissions"); //list of user permissions
} catch (FacebookApiException $e) {
$fbuser = null;
$user_permissions = null;
}
$permissions_needed = explode(',',$fbPermissions); // permission required to proceed
foreach($permissions_needed as $per) //loop thrugh each permission
{
if ($user_permissions != null) {
if(!array_key_exists($per, $user_permissions['data'][0])){
$validUser = 0;
}
}
}
}
if($validUser == 1){
$fbname = $user_profile["last_name"]." ".$user_profile["first_name"];
$fbmail = $user_profile["email"];
$fbid = $user_profile["id"];
}
if(isset($_POST['submit'])) {
header('Location: writetocsv.php?id='.$_POST['fbid'].'&name='.$_POST['fbname'].'&email='.$_POST['email']) ;
}
if($signed_request = parsePageSignedRequest()){
if($signed_request->page->liked) {
if(!userIsInDatabase($fbid)){
include("pages/fanpage.php");
echo "fanpage";
}
else{
include("pages/thankyou.php");
echo "thankyoupage";
}
} else {
include("pages/notfanpage.php");
echo "notafanpage";
}
}
?>
<script>
// Additional JS functions here
function login() {
FB.login(function(response) {
if (response.authResponse) {
// connected
} else {
// cancelled
}
},{scope:"email"});
}
window.fbAsyncInit = function() {
FB.init({
appId : <?php echo AppInfo::appID(); ?> , // App ID
channelUrl : 'channel.html', // Channel File
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
// Additional init code here
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
// connected
} else if (response.status === 'not_authorized') {
// not_authorized
login();
} else {
// not_logged_in
login();
}
});
};
// Load the SDK Asynchronously
(function(d){
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.net/en_US/all.js";
ref.parentNode.insertBefore(js, ref);
}(document));
</script>
Ok, поэтому позвольте мне объяснить это немного. Когда новый пользователь подключается к моей странице приложения вкладки, он показывает ему notafanpage.php. После того, как ему понравилась моя страница, вкладка автоматически обновится и покажет ему fanpage.php. В этой fanpage.php у меня есть форма с именем и письмом, которое мне нужно собрать. После того, как он нажимает submit, он перенаправляет на index.php, где он проверяет входы (еще не выполнен), а затем обратно в writetocsv.php? Id = .. & name = .. & mail = .. где я записываю данные в csv и после этого перенаправляет обратно на index.php. Вот где он получает прослушивание. В нем указано OAuthException: токен активного доступа должен использоваться для запроса информации о текущем пользователе. Какие-либо предложения ?
EDIT:
Ну, я понял это сам. Для тех, у кого есть эта проблема, есть решение:
Facebook отправляет подписанный запрос только при первом доступе к приложению. Поэтому вы должны хранить подписанный запрос в сеансе. Что касается токена доступа, вы должны помнить первый токен доступа и устанавливать его каждый раз, когда страница перезагружается через метод $ facebook-> setAccesToken ($ accestoken). Удачи !
Опубликуйте ответ, не редактируя сообщение, но создайте здесь новый ответ. Затем отметьте это как правильно. –
Хорошо, я сделаю это! Я могу ответить завтра, потому что я только что создал свою учетную запись, и у меня есть некоторые ограничения. – bandrei2408