2014-07-07 42 views
0

我有一個Android客戶端,它啓動登錄到Facebook,接收訪問令牌和有關配置文件的其他詳細信息。Facebook圖形API - 已安裝應用程序的朋友的問題

Android客戶端將access_token和詳細信息傳遞給服務器(PHP)。

兩者都安裝了Facebook SDK。

當我從PHP發起FacebookRequest時,例如'/ me /'它正在工作。

但是當我從PHP '/ me/friends'發起一個(已安裝APP的朋友)FacebookRequest時。我得到「null」。

當我使用Facebook提供的圖形瀏覽器中的結果是:

{ 
    "data": [ 
    ] 
} 

爲助手附加信息:

  • 該應用程序中包含的時刻只有兩個用戶,它們是Facebook上的朋友。

  • 這些用戶都是應用程序的管理員。

  • 目前該應用程序並非實時\發佈。

  • 我們還沒有在統計和評論中的「開始提交」,因爲建議某處。

  • 我們詢問權限'user_friends'。

因爲一切都在堆棧溢出需要的聲譽, 這是權限什麼樣子:

http://i.stack.imgur.com/kURwB.png

感謝

編輯:


OK我加兩個測試用戶,讓他們成爲朋友彼此和/我/朋友通過圖表瀏覽器正在爲他們工作。

但是爲什麼它不適用於非測試用戶?

回答

0

好吧, 顯然,Facebook有一個問題提供新的訪問令牌。 不知道爲什麼,但它爲新登錄提供了相同的訪問令牌。

現在,他們修復了我在PHP中編寫的Handy函數,它可以讓用戶 解析Facebook響應,這可能會發生,因爲沒有任何關於Docs,Google,StackOverFlow的解釋。

use Facebook\FacebookSession; 
use Facebook\FacebookRequest; 

function find_my_facebook_friends($access_token){ 

require_once 'facebook-php-sdk-v4-4.0-dev/autoload.php'; 

FacebookSession::setDefaultApplication('app_key','secret_key'); 


$session = new FacebookSession($access_token); 
$request = new FacebookRequest(
    $session, 
    'GET', 
    '/me/friends' 
); 

    $response = $request->execute(); 
    $graphObject = $response->getGraphObject()->asArray(); 

    return $graphObject; 



    } 

用法:

include_once 'path/to/function.php'; 
    //You wanna use it, just so the PHP file contains your app_key, secret_key Wont be exposed. 

    $access_token = isset($_POST['access_token']) ? $_POST['access_token'] : NULL; 
    $facebook_object = find_my_facebook_friends($access_token); 


    for($i = 0 ; $i < count($facebook_object['data']) ; $i++){ 

    $id = get_object_vars($facebook_object['data'][$i]); 
    echo $id['id']; 
    echo $id['name']; 
    //You don't have to echo, you could handle those fields as you wanted. 

} 

該功能是指經過他的登錄用戶的訪問令牌到服務器的移動客戶端。

我希望這會爲您節省很多時間!

相關問題