2014-10-30 6 views
1

Я использую PHP для системы входа в систему с facebook, но он не получит загруженные изображения из профиля Facebook, только изображение профиля и нормальные вещи из facebook, такие как адрес электронной почты и пользователя.Facebook Graph user pictures

<?php 

/* INCLUSION OF LIBRARY FILEs*/ 
require_once('lib/Facebook/FacebookSession.php'); 
require_once('lib/Facebook/FacebookRequest.php'); 
require_once('lib/Facebook/FacebookResponse.php'); 
require_once('lib/Facebook/FacebookSDKException.php'); 
require_once('lib/Facebook/FacebookRequestException.php'); 
require_once('lib/Facebook/FacebookRedirectLoginHelper.php'); 
require_once('lib/Facebook/FacebookAuthorizationException.php'); 
require_once('lib/Facebook/GraphObject.php'); 
require_once('lib/Facebook/GraphUser.php'); 
require_once('lib/Facebook/GraphSessionInfo.php'); 
require_once('lib/Facebook/Entities/AccessToken.php'); 
require_once('lib/Facebook/HttpClients/FacebookCurl.php'); 
require_once('lib/Facebook/HttpClients/FacebookHttpable.php'); 
require_once('lib/Facebook/HttpClients/FacebookCurlHttpClient.php'); 

/* USE NAMESPACES */ 

use Facebook\FacebookSession; 
use Facebook\FacebookRedirectLoginHelper; 
use Facebook\FacebookRequest; 
use Facebook\FacebookResponse; 
use Facebook\FacebookSDKException; 
use Facebook\FacebookRequestException; 
use Facebook\FacebookAuthorizationException; 
use Facebook\GraphObject; 
use Facebook\GraphUser; 
use Facebook\GraphSessionInfo; 
use Facebook\FacebookHttpable; 
use Facebook\FacebookCurlHttpClient; 
use Facebook\FacebookCurl; 

/*PROCESS*/ 

//Stat Session 
session_start(); 

//check if users wants to logout 
if(isset($_REQUEST['logout'])){ 
    unset($_SESSION['fb_token']); 
} 

//Use app id,secret and redirect url 
$app_id = '****'; 
$app_secret = '*****'; 
$redirect_url='http://www.url.com/index.php'; 

//Initialize application, create helper object and get fb sess 
FacebookSession::setDefaultApplication($app_id,$app_secret); 
$helper = new FacebookRedirectLoginHelper($redirect_url); 
$sess = $helper->getSessionFromRedirect(); 

//check if facebook session exists 
if(isset($_SESSION['fb_token'])){ 
    $sess = new FacebookSession($_SESSION['fb_token']); 
    try{ 
     $sess->Validate($id, $secret); 
    }catch(FacebookAuthorizationException $e){ 
     print_r($e); 
    } 
} 

$loggedin = false; 
//get email as well with user permission 
$login_url = $helper->getLoginUrl(array('email, user_birthday, user_likes, user_friends, user_website, user_photos')); 
//logout 
$logout = 'http://url.com/index.php'; 

//if fb sess exists echo name 
    if(isset($sess)){ 
     //store the token in the php session 
     $_SESSION['fb_token']=$sess->getToken(); 
     //create request object,execute and capture response 
     $request = new FacebookRequest($sess,'GET','/me'); 
     // from response get graph object 
     $response = $request->execute(); 
     $graph = $response->getGraphObject(GraphUser::classname()); 
     // use graph object methods to get user details 
     $id = $graph->getId(); 
     $firstname = $graph->getFirstName(); 
     $lastname = $graph->getLastName(); 
     $name = $graph->getName(); 
     $email = $graph->getProperty('email'); 
     $image = 'https://graph.facebook.com/'.$id.'/picture?width=64&height=64'; 
     $userphoto = 'https://graph.facebook.com/'.$id.'/photos/uploaded'; 
     $loggedin = true; 

Переменная $userphoto - это тот, кто должен показывать все загруженные фотографии от пользователя, но этот не будет показывать какие-либо мои фотографии. Что я делаю не так?

ответ

0

Если все эти дополнительные разрешения не работают, вы, скорее всего, не пытаетесь с разработчиком приложения, и разрешения не одобрены Facebook. Большинство разрешений должны получить одобрение, прежде чем они могут быть использованы - иначе они будут работать только для людей с ролью в App (Администратор/Разработчик/Tester):

Если это не проблема, попробуйте проверить, правильно ли установлены разрешения, поместив токен доступа в отладчик: https://developers.facebook.com/tools/debug/ - Если разрешения не отображаются, что-то не так с процессом входа в систему.

Еще одна идея, вы не можете использовать getLoginURL правильно:

$params = array(
    'scope' => 'read_stream, friends_likes', 
    'redirect_uri' => 'https://www.myapp.com/post_login_page' 
); 

$loginUrl = $facebook->getLoginUrl($params); 

Источник: https://developers.facebook.com/docs/reference/php/facebook-getLoginUrl/

Btw, я предлагаю использовать входящий в комплект поставки автозагрузчика вместо всех тех бесчисленных требуют-заявления.

+0

Первое спасибо за ваш комментарий, но вы говорите, что они будут работать только для людей с ролью в приложении с администратором или разработчиком, администратором i'm из приложения, но я Не видите ли какие-либо мои фотографии, показывающие там? –

+0

Я отредактировал свой ответ, пожалуйста, проверьте токен доступа в отладчике. – luschn

+0

Когда я заполняю свой URL-адрес, он ничего не говорит о разрешениях или чем-то вроде этого? –

0

Вам необходимо установить разрешение «user_photos» в api, иначе вы не сможете получить доступ к фотографиям учетной записи.

+0

$ login_url = $ helper-> getLoginUrl (массив ('email, user_birthday, user_likes, user_friends, user_website, user_photos')); Да, я знаю. –

+0

Я имею в виду это: http://gyazo.com/2ede6a4352a9e941d013c297dd880b49 –