1

我一直在開發一個使用Facebook的API創建即時文章的WordPress插件。 (我從這裏使用SDK版本5.3.1:https://github.com/facebook/php-graph-sdk/tree/5.4)它需要包含很多自定義字段,因此新插件不是使用現有字段。我使用Vagrant/VirtualBox linux服務器在本地機器上開發了它,然後從那裏我能夠成功驗證身份並創建一個即時文章,然後在發佈工具>即時文章>開發文章中出現在Facebook上的列表中。Facebook即時文章:使用圖形API創建文章

我將這個相同的代碼部署到實時Web服務器上以繼續測試它。身份驗證仍然成功,但是當我嘗試從該服務器發佈文章時,即時文章從未創建,並且不會顯示在Facebook上的列表中。

令人費解的是,兩次嘗試的結果都差不多。一個區別是accessToken值,我標記爲{access_token}。我標記爲{different}的回覆之間的其他差異。

任何人都可以幫助我理解爲什麼一個成功,另一個失敗沒有任何明顯的錯誤在PHP或在API響應?使用本地計算機

響應(成功):使用Live服務器

object(Facebook\FacebookResponse)#144 (6) { 
    ["httpStatusCode":protected]=> 
    int(200) 
    ["headers":protected]=> 
    array(13) { 
    ["Access-Control-Allow-Origin"]=> 
    string(1) "*" 
    ["Pragma"]=> 
    string(8) "no-cache" 
    ["Cache-Control"]=> 
    string(44) "private, no-cache, no-store, must-revalidate" 
    ["facebook-api-version"]=> 
    string(4) "v2.7" 
    ["Expires"]=> 
    string(29) "Sat, 01 Jan 2000 00:00:00 GMT" 
    ["Content-Type"]=> 
    string(31) "application/json; charset=UTF-8" 
    ["x-fb-trace-id"]=> 
    string(11) "{different}" 
    ["x-fb-rev"]=> 
    string(7) "{different}" 
    ["Vary"]=> 
    string(15) "Accept-Encoding" 
    ["X-FB-Debug"]=> 
    string(88) "{different}" 
    ["Date"]=> 
    string(29) "Wed, 19 Oct 2016 16:24:51 GMT" 
    ["Connection"]=> 
    string(10) "keep-alive" 
    ["Content-Length"]=> 
    string(2) "25" 
    } 
    ["body":protected]=> 
    string(25) "{"id":"{different}"}" 
    ["decodedBody":protected]=> 
    array(1) { 
    ["id"]=> 
    string(16) "{different}" 
    } 
    ["request":protected]=> 
    object(Facebook\FacebookRequest)#145 (9) { 
    ["app":protected]=> 
    object(Facebook\FacebookApp)#183 (2) { 
     ["id":protected]=> 
     string(16) "{app_id}" 
     ["secret":protected]=> 
     string(32) "{app_secret}" 
    } 
    ["accessToken":protected]=> 
    string(168) "{access_token}" 
    ["method":protected]=> 
    string(4) "POST" 
    ["endpoint":protected]=> 
    string(29) "/{some_endpoint_id}/instant_articles" 
    ["headers":protected]=> 
    array(1) { 
     ["Content-Type"]=> 
     string(33) "application/x-www-form-urlencoded" 
    } 
    ["params":protected]=> 
    array(3) { 
     ["development_mode"]=> 
     string(1) "1" 
     ["published"]=> 
     bool(false) 
     ["html_source"]=> 
     string(1600) "<html> ... </html>" 
    } 
    ["files":protected]=> 
    array(0) { 
    } 
    ["eTag":protected]=> 
    NULL 
    ["graphVersion":protected]=> 
    string(4) "v2.7" 
    } 
    ["thrownException":protected]=> 
    NULL 
} 

響應(失敗):

object(Facebook\FacebookResponse)#107 (6) { 
    ["httpStatusCode":protected]=> 
    int(200) 
    ["headers":protected]=> 
    array(13) { 
    ["Access-Control-Allow-Origin"]=> 
    string(1) "*" 
    ["Pragma"]=> 
    string(8) "no-cache" 
    ["Cache-Control"]=> 
    string(44) "private, no-cache, no-store, must-revalidate" 
    ["facebook-api-version"]=> 
    string(4) "v2.7" 
    ["Expires"]=> 
    string(29) "Sat, 01 Jan 2000 00:00:00 GMT" 
    ["Content-Type"]=> 
    string(31) "application/json; charset=UTF-8" 
    ["x-fb-trace-id"]=> 
    string(11) "{different}" 
    ["x-fb-rev"]=> 
    string(7) "{different}" 
    ["Vary"]=> 
    string(15) "Accept-Encoding" 
    ["X-FB-Debug"]=> 
    string(88) "{different}" 
    ["Date"]=> 
    string(29) "Wed, 19 Oct 2016 16:02:08 GMT" 
    ["Connection"]=> 
    string(10) "keep-alive" 
    ["Content-Length"]=> 
    string(2) "24" 
    } 
    ["body":protected]=> 
    string(24) "{"id":"{different}"}" 
    ["decodedBody":protected]=> 
    array(1) { 
    ["id"]=> 
    string(15) "{different}" 
    } 
    ["request":protected]=> 
    object(Facebook\FacebookRequest)#106 (9) { 
    ["app":protected]=> 
    object(Facebook\FacebookApp)#126 (2) { 
     ["id":protected]=> 
     string(16) "{app_id}" 
     ["secret":protected]=> 
     string(32) "{app_secret}" 
    } 
    ["accessToken":protected]=> 
    string(164) "{access_token}" 
    ["method":protected]=> 
    string(4) "POST" 
    ["endpoint":protected]=> 
    string(29) "/{some_endpoint_id}/instant_articles" 
    ["headers":protected]=> 
    array(1) { 
     ["Content-Type"]=> 
     string(33) "application/x-www-form-urlencoded" 
    } 
    ["params":protected]=> 
    array(3) { 
     ["development_mode"]=> 
     string(1) "1" 
     ["published"]=> 
     bool(false) 
     ["html_source"]=> 
     string(1639) "<html> ... </html>" 
    } 
    ["files":protected]=> 
    array(0) { 
    } 
    ["eTag":protected]=> 
    NULL 
    ["graphVersion":protected]=> 
    string(4) "v2.7" 
    } 
    ["thrownException":protected]=> 
    NULL 
} 
+1

當您請求通過API獲取的ID的詳細信息時會發生什麼? – CBroe

回答

1

由於CBroe的建議在他的評論中我能找出問題的原因。因此,請求至get the article import status後,我發現在響應此錯誤消息:

["body":protected]=> 
    string(439) "{"errors":[{"level":"ERROR","message":"Unclaimed URL: The URL http:\/\/www.example.com\/my-article-url\/ has not been claimed for Instant Articles. Please check to make sure you have a URL registered for your page. For more information refer to URLs in the Publishing Articles section of the Instant Articles documentation."}],"status":"FAILED","id":"{some_id}"}" 

然後我意識到,我的功能構建即時條的標記,我是做上標記一個str_replace讓我的地方測試域名將被替換爲正確的「聲明」域名。由於我們已經將代碼部署到了新域,所以這種替換並未發生,Facebook在標記中看到了一個不正確的「未聲明」域。

通過將新域名添加到要替換的名稱數組中,我能夠將標記發送到「已聲明」域的Instant Articles。我的文章成功創建!

非常感謝CBroe,我失去了理智。