Я пытаюсь интегрировать нашу БД с API-интерфейсом facebook, действительно новый для этого, поэтому я был бы признателен за некоторую помощь.
Я всегда получаю 0
Использования
$uid = $facebook->getUser()
Я имел взгляд на подобные вопросы, но не нашел связанное решение.
PHP
if($_REQUEST['action']=="signup" && $_REQUEST['auth']=="facebook" && !empty ($_REQUEST['auth']) && !empty ($_REQUEST['action']))
{
require_once('libs/facebook/src/facebook.php');
$config = array();
$config['appId'] = 'xxxx';
$config['secret'] = 'xxxxxx';
$facebook = new Facebook($config);
$uid = $facebook->getUser();
echo $uid;
}
//else {} normal sign up here with all the error checking
window.fbAsyncInit = function() {
// init the FB JS SDK
FB.init({
appId : 'XXXX, // App ID from the app dashboard
channelUrl : '//WWW.XXXX.com', // Channel file for x-domain comms
status : true, // Check Facebook Login status
xfbml : true // Look for social plugins on the page
});
// Additional initialization code such as adding Event Listeners goes here
// will be handled.
FB.Event.subscribe('auth.authResponseChange', function(response) {
// Here we specify what we do with the response anytime this event occurs.
if (response.status === 'connected') {
loginfunction();
} else if (response.status === 'not_authorized') {
FB.login(function(response) {},{scope: 'email'});
} else {
FB.login(function(response) {},{scope: 'email'});
}
});
};
(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1&appId=XXXXX";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
function loginfunction() {
console.log('Welcome! Fetching your information.... ');
FB.api('/me', function (response) {
console.log(response);
/*I can see all the data here and the button also changes so I know that I am logged in */
var data = 'action=signup&username=' + response.username + '&firstname=' + response.first_name + '&gender=' + response.gender + '&lastname=' + response.last_name + '&email=' + response.email + '&dob=' + "xxxx" + '&auth=facebook';
/*What's the point in passing all these parameters through ? only need to pass &auth=facebook and action=signup I guess the rest can be manipulated anyway so what's the point
need to get them from PHP SDK (server side ajax call) */
$.ajax({
type: "POST",
url: "actions/do_signup.php",
data: data,
beforeSend: function (html) {},
success: function (html) {
if (html == "success") {
window.location.replace("index.php");
} else {}
}
});
}, {
scope: 'email'
});
}
благодаря HTML
<div class="fb-login-class">
<div class="fb-login-button" autologoutlink="true" scope="publish_stream" perms="email,user_birthday" data-show-faces="false"
data-width="200" data-max-rows="1"></div>
</div>
JAVASCRIPT/Jquery
EDIT пробовал только с PHP по-прежнему не
require('facebook.php');
$facebook = new Facebook(array (
'appId' => 'xxx',
'secret' => 'xxxx',
'cookie' => true
)
);
if ($_REQUEST['act']=="fb")
{
//$next_url = $facebook->getLoginStatusUrl($params);
if ($facebook->getUser()) {
$userProfile = $facebook->api('/me');
$uid = $facebook->getUser();
// do logic
echo $uid ;
echo "ok";
} else {
echo "problem";
$loginUrl = $facebook->getLoginUrl($params = array('scope' => user_birthday,read_stream,'redirect_uri' => 'http://xxxx/index.php?act=success'));
header('Location:' . $loginUrl);
}
}
else if ($_REQUEST['act']=="success")
{
try{
$_SESSION['fbAT'] = $facebook->getAccessToken();
}catch(Exception $e){
trigger_error("FB AccessToken: " . $e->getMessage());
}
$facebook->setAccessToken($_SESSION['fbAT']);
if ($facebook->getUser()) {
$uid = $facebook->getUser();
$userProfile = $facebook->api('/me');
// do logic
echo $uid ;
echo $userProfile;
echo "ok";
} else {
$uid = $facebook->getUser();
echo $uid ;
echo "still problem";
}
Некоторые шаги, которые я пытался:
- режим Sandbox отключен, и я подтвердил идентификатор приложения и секретный , а ...
- попытался добавить заголовок: заголовок ('P3P : CP = «IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS НАШ ИНД CNT»);
- Добавлено печенье»=> верно
- Попробуйте вызвать его из статической страницы не через AJAX еще 0
- только веб-сайт используется при facebook основной вкладке
- Под опережающего типа приложения устанавливается на веб
- Под разрешения по умолчанию деятельность является публичной
- Убедился, что fb_ca_chain_bundle.crt находится в той же директории, что facebook.php также попытался использовать другой реж (то же самое с моим файлом PHP)
- Попытка только PHP и getLog inUrl с дополнительными возможностями для доступа.
- Попытка получения и установки маркер доступа
Пробовал, что все еще получает 0 назад. Я бы не ожидал, что вам нужно снова войти в систему с помощью getloginurl (так как я уже зарегистрировался через JS), но, тем не менее, я все еще получаю обратно. – Athanatos
Я уточнил вопрос с кодом – Athanatos
Вход в Facebook с JavaScript даст пользователям доступ к браузеру Facebook api, но не ваш сервер, который будет делать PHP-вызовы - я сделаю для вас некоторое чтение и попытаюсь объяснить, как чтобы объединить два метода общения с Facebook, но с моей точки зрения, я думаю, вам нужно войти в систему с PHP и 'getLoginUrl', а затем передать свой' $ facebook-> getAccessToken() 'на ваш JavaScript. Проделайте некоторое чтение и дайте более краткий ответ, но на данный момент вы должны убедиться, что после входа в систему вы можете 'print_r ($ facebook-> api ('/ me'));' и получить свою информацию – GroovyCarrot