2013-08-29 39 views
0

我知道,在Facebook的API的最新更新,存在提供appsecret_proof是與app_secret簽署的訪問令牌的可能性。我總是得到:「提供無效appsecret_proof」

現在的問題是,我在我的Facebook應用程序設置選項的irregardless(啓用\禁用:Require AppSecret Proof for Server API calls)我總是得到:

Invalid appsecret_proof provided in the API argument

我發現PHP Facebook的的最後一個版本-sdk總是參數之間插入appsecret_proof

... 
if (isset($params['access_token'])) { 
    $params['appsecret_proof'] = $this->getAppSecretProof($params['access_token']); 
} 
... 
protected function getAppSecretProof($access_token) { 
    return hash_hmac('sha256', $access_token, $this->getAppSecret()); 
} 
... 

如果我禁用我的應用程序的檢查,並評論說,插入參數的行,一切工作正常,否則我得到的ER ROR。

現在,我錯在哪裏? 我三重檢查$access_token$this->getAppSecret()和文檔,似乎都是正確的。 任何線索?

+1

您是否使用了錯誤的應用ID,錯誤應用程序的祕密,或者試圖從錯誤的應用程序使用一個訪問令牌? – Igy

+0

是的.. AccessToken是正確的,但是舊的應用程序的老令牌..謝謝!我明天會刪除這個問題,因爲這是非常無用的。再次感謝你! –

回答

0

我終於能夠通過只授予權限的一切擺脫錯誤的。

+1

你能提供比這更多的細節嗎?這個答案有點含糊,似乎沒有解決@SalvatoreD的問題。在問。 –

+0

需要一個堅定的答案。 – Prashant

+0

有點含混不清:)不是很有幫助 – odino

0

讓你的頭腦,從簡單的工作,有問題的複雜的解決方案。在這種特殊情況下,我會首先做的是雙(三人間)檢查我的:的App-ID的App-祕密API-版本(在應用信息中心提供的所有3)和訪問令牌(工具&支持>圖形API資源管理器)。

對我來說,缺少的部分是訪問令牌。確保在Graph API Explorer下找到右側的下拉框並選擇選擇您的註冊應用程序名稱,而不是默認值「Graph API Explorer」。

因此,所有後您的代碼應該是這樣的(圖V2.4):

$fb = new Facebook\Facebook([ 
    'app_id' => $app_id, 
    'app_secret' => $app_secret, 
    'default_graph_version' => $api_version 
]); 
相關問題