2015-12-01 46 views
1

在我的PHP應用程序中,用戶提供自己的Facebook應用程序ID和應用程序密鑰。我需要驗證它們,並顯示錯誤,如果它們是無效的。使用Facebook進行匿名呼叫PHP SDK

我已經找到了一個很好的方法來做到這一點。我能爲https://graph.facebook.com/oauth/access_token?client_id=123456&client_secret=abcdefg&grant_type=client_credentials

的請求。如果憑證無效,響應如下:

{ 
    "error": { 
     "message": "Error validating application. Cannot get application info due to a system error.", 
     "type": "OAuthException", 
     "code": 101, 
     "fbtrace_id": "D8oHjJoc2Nc" 
    } 
} 

我感到困惑與PHP SDK做到這一點的方式。有一個整潔的get()方法來提出這樣的請求,但我不確定如何發送請求而不授權應用程序。這是我做過什麼:

$app = new Facebook\FacebookApp($app_id, $app_secret); 

$access_token = $app->getAccessToken(); 

$query = http_build_query([ 
    'client_id'  => $app_id, 
    'client_secret' => $app_secret, 
    'grant_type' => 'client_credentials', 
]); 

$facebook = new Facebook\Facebook([ 
    'app_id' => $app_id, 
    'app_secret' => $app_secret, 
    'default_graph_version' => '2.5', 
]); 

$response = $facebook->get('/oauth/access_token?' . $query, $access_token); 

,我發現了以下錯誤:

Unknown path components: /oauth/access_token

但即使它的工作,它的奇特與任意一個發送者憑據來調用它。是否可以使用PHP SDK創建「匿名」Facebook請求?

+0

據我所知,這是不可能的。您需要授權的應用才能提出請求。 – Stavros

+0

應用程序ID和應用程序祕密與中間的管道符號的組合可以用作應用程序訪問令牌 - 因此您可以構建該應用程序,然後[debug](https://developers.facebook.com/docs/facebook -login/access-tokens/debug-and-error-handling#debug)來檢查它是否是有效的訪問令牌。或者只需使用該令牌進行簡單的API請求,並查看您得到的響應。 – CBroe

+0

@CBroe,你能否進一步解釋你的意思是「app-id,app-secret?這樣的組合:app-id?app-secret? – Stavros

回答

1

的SDK隱式添加指定的路徑的API版本號 - > get()方法,所以我認爲,在這裏引起你的錯誤,因爲底層的呼叫被以/2.5/oauth/access_token做(在瀏覽器中失敗對我來說)

它應該是/v2.5/oauth/access_token(對我的作品在瀏覽器中)

更新default_graph_versionv2.5,並嘗試

+0

就是這樣!我不相信我犯了這樣有趣的錯誤:) –