2011-09-29 24 views
5

के साथ फोटो प्राप्त करें मैंने इस बारे में बहुत सारे ट्यूटोरियल/आलेख/प्रश्न पढ़े हैं, साथ ही साथ एफबी दस्तावेज में कुछ उपयोगी खोजने की कोशिश की है।ग्राफ एपीआई

अभी तक मैंने अपने आप में कोई प्रगति नहीं की है इसलिए किसी भी इनपुट की सराहना की जाएगी, मैं बस अपनी तस्वीरों की एक सूची तक पहुंचने की कोशिश कर रहा हूं लेकिन मुझे बस एक खाली सरणी मिलती है।

मुझे पता है कि मैंने शायद अधिक से अधिक req_perms को जोड़ा है, मुझे बस एक "काम करने वाले ट्यूटोरियल" से कॉपी किया गया है जो मेरे लिए काम नहीं करता है, और यहां धागा पढ़ने के बाद मैंने उपयोगकर्ता_फोटो_विडियो_टैग भी जोड़ा क्योंकि उसने काम किया था धागा पोस्टर (फिर से, मुझे नहीं)।

मैं संवाद तस्वीरें मेरे ऐप्स के साथ मेरी तस्वीरें साझा अनुमति देने के लिए मिल गया है, लॉगिन बिना किसी समस्या के काम करता है, पहुँच टोकन मैं मिलता है, सही होने लगते प्रवेश करने में मैं दौरा किया है के बाद:

https://graph.facebook.com/me/photos?access_token= और टोकन, और एक खाली सरणी प्राप्त की, अगर मैं लॉग इन नहीं किया गया था या access_token मेरे ऐप से लिंक नहीं किया गया था तो कुछ त्रुटि होगी, लेकिन मुझे जो कुछ मिलता है वह एक खाली सरणी है।

किसी भी इनपुट के लिए अग्रिम धन्यवाद।

{ 
    "data": [ 
     { 
     "installed": 1, 
     "status_update": 1, 
     "photo_upload": 1, 
     "video_upload": 1, 
     "create_note": 1, 
     "share_item": 1, 
     "publish_stream": 1 
     } 
    ] 
} 

<?php 
error_reporting(E_ALL); 
ini_set("display_errors", 1); 
require_once 'library/facebook.php'; 

$app_id = "xxxxxxxxxxxxxxxx"; 
$app_secret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxx"; 

$facebook = new Facebook(array(
    'appId' => $app_id, 
    'secret' => $app_secret, 
    'cookie' => true 
)); 

$loginLink = $facebook->getLoginUrl(array(
    'scope' => 'user_status,publish_stream,user_photos,user_photo_video_tags' 
)); 
$logOutLink = $facebook->getLogoutUrl(); 

$user = $facebook->getUser(); 

if ($user) { 
    try { 
     // User logged in, get token 
     $token = $facebook->getAccessToken(); 
     //var_dump($token); dumped successfully 
     // Get public profile info 
     $user_profile = $facebook->api('/me'); 
     //var_dump($user_profile); dumped successfully 
     $photos = $facebook->api('/me/photos?access_token=' . $token); 
     var_dump($photos); // Empty array, BAH! 
    } catch (FacebookApiException $e) { 
     $user = null; 
    } 
} 

?> 
<a href="<?php echo $loginLink; ?>">Click here to login if you aren't autoredirected</a><br /><br /><br /> 
<a href="<?php echo $loginLink; ?>">Click here to logout</a> 

उत्तर

3

सुनिश्चित नहीं हैं कि अगर इस समस्या है, लेकिन इस प्रयास करें:

चेनी ब्लू के लिए धन्यवाद मैं अपने अनुमतियों को मान्य करने में सक्षम था। ऐसा लगता है कि आप नवीनतम PHP एसडीके का उपयोग कर रहे हैं। आपके getLoginUrl() में; कॉल करें, 'req_perms' को 'स्कोप' में बदलने का प्रयास करें।

इस तरह

:

$loginLink = $facebook->getLoginUrl(array(
    'scope' => 'user_status,publish_stream,user_photos,user_photo_video_tags' 
)); 

आप सत्यापित कर सकते हैं कि आप https://graph.facebook.com/me/permissions/?access_token=XXXX

+0

धन्यवाद, मैं अभी भी एक खाली सरणी "डाटा" मिलता है लेकिन कम से कम मैं अपने अनुमतियाँ सत्यापित कर सकता {:। [ { "स्थापित": 1, "status_update": 1, "photo_upload": 1, "video_upload": 1, "create_note": 1, "share_item": 1, "publish_stream": 1 } ] } –

+0

ऐसा लगता है कि user_photos अनुमति नहीं मिली है। यही कारण है कि आपको खाली सरणी मिल रही है। ऐप को हटाने और पुनः प्राधिकृत करने का प्रयास करें। –

2

जाकर कुछ अन्य अनुमतियों को मैंने देखा है फेसबुक मेरी टोकन के लिए अनुमतियों को अपडेट करते नहीं थे परीक्षण के बाद से सही अनुमतियां अधिकृत कर दी है, ऐप से लॉग आउट करते समय भी, फिर से लॉग इन करना और नई अनुमतियों को स्वीकार करना कुछ भी नहीं बदला जब मैंने चानी ब्लू से प्राप्त ग्राफ़ अनुमति लिंक को देखा।

मैंने फेसबुक के ग्राफ एपीआई पेज http://developers.facebook.com/docs/reference/api/ से टोकन को सत्यापित करने के लिए उस लिंक का उपयोग किया और देखा कि टोकन के पास user_photos तक पहुंच थी, लेकिन मेरा टोकन नहीं था।

मेरी फेसबुक सेटिंग्स में जाकर और ऐप को हटाकर फेसबुक ने अगली बार ऐप में साइन इन करने पर मेरी अनुमतियों को अपडेट किया।

मुझे सही ट्रैक पर रखने के लिए चेनी ब्लू के लिए धन्यवाद। अगर मैं प्रतिष्ठा रखूं तो आपको वोट दूंगा।

+1

यहां कुछ प्रतिनिधि के लिए वोट दिया गया है :) – CuddleBunny

+0

अनुमतियों को पुनः लोड करने के लिए मजबूर करने के लिए (और उन्हें अधिकृत करें) आप login_url के अंत में '& auth_type = rerequest' जोड़ सकते हैं। उत्पादन के लिए इसे केवल एक बार ऐप के लिए अनुमति दी जाती है, लेकिन विकास में आपको जितनी बार आवश्यकता हो उतनी बार ऐसा करने में सक्षम होना चाहिए। –

संबंधित मुद्दे