php
  • facebook
  • 2011-08-22 76 views 3 likes 
    3

    註冊的成就,我花了很多時間試圖註冊使用grahp API與Facebook的成就,但 我總是得到這個:Facebook的API:無法與Facebook

    {"error":{"type":"OAuthException","message":"(#2) Object at achievement URL is not of type game.achievement"}}

    的代碼是:

    $achievementUrl = 'http://www.dappergames.com/test.html'; 
    $url = 'https://graph.facebook.com/' . $appID . '/achievements?achievement=' . 
         $achievementUrl . '&display_order=' . $order . '&access_token=' . $accessToken . ''; 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0); 
    curl_setopt($ch, CURLOPT_POST, true); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $fields); 
    $data = curl_exec($ch); 
    print_r($data); 
    

    任何幫助將不勝感激。

    感謝

    +0

    以管理員身份前往您的Facebook應用程序設置,並檢查您是否將應用程序歸入遊戲類別下......我認爲這樣可以解決您的問題。 – Vijay

    +0

    嗨Vijay,我的應用被歸類爲「遊戲」應用。所以這不應該是一個原因。 – Dantenello

    回答

    0

    請確保您有正確的Open Graph的meta標籤在你的成就URL $achievementUrl

    <html xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://ogp.me/ns#"> 
        <head> 
        <title>ACHIEVEMENT_TITLE</title> 
        <meta property="og:type" content="game.achievement"/> 
        <meta property="og:url" content="URL_FOR_THIS_PAGE"/> 
        <meta property="og:title" content="ACHIEVEMENT_TITLE"/> 
        <meta property="og:description" content="ACHIEVEMENT_DESCRIPTON"/> 
        <meta property="og:image" content="URL_FOR_ACHIEVEMENT_IMAGE"/> 
        <meta property="og:points" content="POINTS_FOR_ACHIEVEMENT"/> 
        <meta property="fb:app_id" content="YOUR_APP_ID"/> 
        </head> 
        <body> 
        Promotional content for the Achievement. 
        This is the landing page where a user will be directed after 
        clicking on the achievement story. 
        </body> 
    </html> 
    

    以上僅僅是從這個post一個例子。請注意示例中的第一個元標記?我想它在你的頁面中缺少。

    +0

    感謝您的幫助,但我在測試成績網址上獲得了相同的元碼 - http://www.dappergames.com/test.html。它看起來與您的示例相同,但是填充了值。 – Dantenello

    +0

    @Dantenello:你屏蔽了Facebook機器人嗎?在[Facebook調試器](https://developers.facebook.com/tools/debug/og/object?q=http%3A%2F%2Fwww.dappergames.com%2Ftest.html)上運行你的網址是給頁面cann不能達成! – ifaour

    +0

    @ifaour頁面無法到達錯誤,因爲測試頁面缺少og:url參數,在opengraph中該屬性用作永久鏈接,是調試器從中檢索信息的頁面。 –

    2

    看着your test,你錯過了最重要的標籤og:url。

    Facebook使用該標籤來查找解析信息的位置,我在向我的應用添加成就時遇到了類似的問題,直到我找到解決辦法。這是我的樣子。礦通過debugger,目前在Facebook上工作。

    <!DOCTYPE html> 
    <html xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://ogp.me/ns#" xmlns:fb="http://www.facebook.com/2008/fbml"> 
    <head> 
        <title>Game Loader</title> 
        <meta property="og:type" content="game.achievement"/> 
        <meta property="og:title" content="Game Loader"/> 
        <meta property="og:url" content="FULL LINK TO THIS PAGE"/> 
        <meta property="og:description" content="You loaded the gam!e"/> 
        <meta property="og:image" content="Link to 50x50 image"/> 
        <meta property="og:points" content="10"/> 
        <meta property="fb:app_id" content="YOUR_APP_ID"/> 
    </head> 
    <body> 
    </body> 
    </html> 
    

    更新您的HTML在此之後,通過上面鏈接調試器使得它在Facebook上的最終更新(和看到,如果你收到任何警告),然後創建它,它給用戶運行它。

    以下是我創造了它:

    curl -D "achievement=[URL TO ACHIEVEMENT]&access_token=[APPLICATION ACCESS TOKEN]" https://graph.facebook.com/APP_ID/achievements 
    

    ,然後我就獎勵給使用Facebook的Javascript API在我的畫布應用程序的用戶,像這樣:

    FB.api('/'+user_id+'/achievements', 'POST', { 'access_token': [APPLICATION ACCESS TOKEN], 'achievement':[FULL URL]}, 
         function(response) { 
           if(console) 
             console.log(response); 
         }); 
    
    0
    <meta property="og:title" content="Game Loader"/> 
    <meta property="og:url" content="FULL LINK TO THIS PAGE"/> 
    

    這些必填字段。提供所有必填字段,並使用調試工具再次嘗試,如果調試工具通過了您的頁面,則您可以註冊成果。

    相關問題