2011-09-29 35 views
5

Tôi đã đọc rất nhiều bài hướng dẫn/bài viết/câu hỏi ở đây về điều này, cũng như cố gắng tìm một cái gì đó hữu ích trong tài liệu fb.Tải ảnh có đồ thị api

Cho đến bây giờ tôi không có tiến bộ gì cả nên mọi đầu vào đều được đánh giá rất cao, tôi chỉ đơn giản là cố truy cập danh sách ảnh của mình nhưng tất cả những gì tôi nhận được là một mảng trống.

Tôi biết tôi đã thêm req_perms nhiều hơn tôi cần, tôi chỉ sao chép từ "hướng dẫn làm việc" không hoạt động cho tôi và sau khi đọc một chuỗi ở đây, tôi cũng thêm user_photo_video_tags vì nó đã làm việc cho áp phích chủ đề (một lần nữa, không phải tôi).

tôi đã nhận được hộp thoại để cho phép chia sẻ ảnh ảnh của tôi với ứng dụng của tôi, đăng nhập hoạt động mà không vướng mắc, các thẻ truy cập tôi nhận được dường như là đúng, sau khi đăng nhập tôi đã truy cập:

https://graph.facebook.com/me/photos?access_token= và mã thông báo, và nhận được một mảng trống, nếu tôi không đăng nhập hoặc access_token wasnt liên kết với ứng dụng của tôi sẽ có một số lỗi, nhưng tất cả tôi nhận được là một mảng trống.

Cảm ơn trước về mọi đầu vào.

Nhờ Chaney Blu tôi đã có thể để xác nhận quyền của tôi:

{ 
    "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> 

Trả lời

3

Không chắc nếu đây là vấn đề, nhưng cố gắng này. Có vẻ như bạn đang sử dụng SDK PHP mới nhất. Trong getLoginUrl() của bạn; cuộc gọi, hãy thử thay đổi 'req_perms' thành 'scope'.

Như thế này:

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

Bạn có thể xác minh rằng bạn đã cho phép các điều khoản đúng bằng cách truy cập https://graph.facebook.com/me/permissions/?access_token=XXXX

+0

Cảm ơn, tôi vẫn nhận được một mảng trống rỗng nhưng ít nhất tôi có thể xác minh quyền của tôi { "dữ liệu":. [ { "cài đặt": 1, "status_update": 1, "photo_upload": 1, "video_upload": 1, "create_note": 1, "share_item": 1, "publish_stream": 1 } ] } –

+0

Dường như bạn đang thiếu sự cho phép user_photos. Đó có thể là lý do tại sao bạn nhận được một mảng trống. Thử xóa ứng dụng và ủy quyền lại. –

2

Sau khi thử nghiệm một số điều khoản khác tôi nhận thấy facebook không được cập nhật các điều khoản vào mã thông báo của tôi, ngay cả khi đăng xuất khỏi ứng dụng, đăng nhập lại và chấp nhận các quyền mới không có gì thay đổi khi tôi xem liên kết Quyền biểu đồ mà tôi nhận được từ Chaney Blu.

Tôi đã sử dụng liên kết đó để xác minh mã thông báo từ trang api biểu đồ facebook http://developers.facebook.com/docs/reference/api/ và nhận thấy rằng mã thông báo có quyền truy cập vào user_photos chứ không phải mã thông báo của tôi.

Đi vào cài đặt facebook của tôi và xóa ứng dụng được thực hiện cập nhật facebook quyền của tôi vào lần tiếp theo tôi đăng nhập vào ứng dụng.

Nhờ Chaney Blu đã giúp tôi đi đúng hướng. Sẽ bầu bạn nếu tôi có danh tiếng.

+1

Đây là một phiếu bầu cho một số đại diện :) – CuddleBunny

+0

Để buộc tải lại quyền (và cho phép chúng) bạn có thể thêm '& auth_type = rerequest' vào cuối login_url. Để sản xuất, điều này chỉ được phép một lần cho một ứng dụng, nhưng trong quá trình phát triển, bạn sẽ có thể thực hiện việc này thường xuyên nếu cần. –

Các vấn đề liên quan