2011-09-09 61 views
0

我不斷得到OAuthException(#15)「這個方法必須使用一個應用程序來的access_token稱爲」試圖註冊成就我以下列方式應用:OAuthException(#15)「這個方法必須使用一個應用程序來的access_token稱爲」試圖發佈業績

FB.api("/APP_ID/achievements", 
'post', 
{achievement: FULL_ACHIEVEMENT_URL, access_token: ACCESS_TOKEN, display_order: 1}, 
function(response){ 
    getFlashMovieObject(referrer).fbDataCallback(response); 
}); 

成果文件結構已被驗證是正確的,ACCESS_TOKEN值也沒關係 - 如果我改變HTTP方法「獲得」我收到註冊成就商店的數組。

你能不能,請告訴我如何正確地註冊的成績使用JS API的方法呢?

+0

你有沒有達到你想要什麼? –

+0

http://stackoverflow.com/questions/9814517/this-method-must-be-called-with-an-app-access-token –

回答

0

您無法調用需要來自客戶端SDK(如JavaScript SDK)的應用程序訪問令牌的方法。 JavaScript SDK將始終隱式發送API調用的用戶訪問令牌。這是出於安全原因而設計的。

希望這有助於

+0

看來,這是不是原因 - 因爲有我上面提到的,「得到」 reguest使用相同的訪問令牌需要成功返回實際數據。 –

+0

「get」請求是一種簡單列出成就的不同方法,它可能受到的限制較少(不需要應用程序訪問令牌)。 –

+0

關於限制'get'請求是正確的,但實際上,在沒有「access_token」變量傳遞的情況下,用戶訪問令牌被添加到JS API調用參數中。我通過我的應用程序訪問令牌,並且嗅探器證明它是外出的。 –

0

似乎沒有答案。我今天再一次嘗試了它 - 它只是開始工作)

注意:不要指望一個POST請求出現在您的嗅探器(像我一樣:)),即使你已經指定各自的「方法。 '值,同時調用FB.api() - 任何你會看到GET的方式。這是一個強制解決方法,它的工作原理。

0

我對這個問題的解決是抓住用PHP APP訪問令牌,然後通過該令牌作爲後對象的一部分。 USER訪問令牌不起作用。

我不得不爲Flash遊戲我的建築,通過外部接口使用的JavaScript SDK做到這一點。您無法使用Javascript獲取應用程序訪問令牌,因爲您會泄露應用程序密鑰,這是一個安全問題。

<?php 

$APPLICATION_ID = YOUR_APP_ID; 
$APPLICATION_SECRET = YOUR_APP_SECRET; 

$token_url = "https://graph.facebook.com/oauth/access_token?" . 
     "client_id=" . $APPLICATION_ID . 
     "&client_secret=" . $APPLICATION_SECRET . 
     "&grant_type=client_credentials"; 
$app_token = file_get_contents($token_url); 

?> 
相關問題