0

如果我會嘗試這個URL傳遞到Open Graph的Facebook Open Graph - 如何在URL中傳遞參數?

$url = 'http://abc.com/index.php'; 
$facebook->api('/me/url_app:action','POST', array('something'=>$url)); 

一切運作良好。 但是,如果我嘗試添加一些參數,如

$url = 'http://abc.com/index.php?a=b&c=d'; 
$facebook->api('/me/url_app:action','POST', array('something'=>$url)); 

那麼我會得到這個錯誤

Fatal error: Uncaught Exception: Object at URL 'http://abc.com/index.php?a=b&c=d' of type 'url_app:action' is invalid because the given value '' for property 'og:url' could not be parsed as type 'url'. thrown in _PATH_/base_facebook.php on line 1050 

爲什麼我不能添加一些參數的URL地址?

編輯另外,這裏是編碼環節的PHP函數:

function encodeURIComponent($str) { 
    $revert = array('%21'=>'!', '%2A'=>'*', '%27'=>"'", '%28'=>'(', '%29'=>')', '%3D'=>'=', '%3F'=>'?'); 
    return strtr(rawurlencode($str), $revert); 
} 
+1

您不必編碼任何東西的時候只給一個網址作爲參數傳遞給API方法。你有沒有試過通過調試工具運行你的URL--它說什麼? https://developers.facebook.com/tools/debug – CBroe

+0

@Cbroe是對的,調試工具是你最好的朋友。在這種情況下,該網址的元標記似乎已破壞爲og:url。另外,爲什麼你這樣編碼?如果必須建議使用http://php.net/manual/en/function.urlencode.php(您不必在這種情況下,SDK應該爲您做)。 – Claudiu

回答

0

你必須來urlencode您的網址。

$url = encodeURIComponent('http://abc.com/index.php?a=b&c=d');
$facebook->api('/me/url_app:action','POST', array('something'=>$url));

這可能會解決你的問題......

+0

我試過使用這個函數,但是我得到了類似的錯誤信息:'致命錯誤:Uncaught OAuthException:(#3503)「http%3A%2F%2Fabc.com%2Findex.php%3Fa%3Db」is對於類型爲「引用」的屬性「鞋」,引發了無效值... – user984621

+1

_「您必須urlencode您的網址」_ - 否,您不需要;不在這方面。 – CBroe