2016-07-18 209 views
0

我試圖向Facebook應用鏈接添加縮略圖,但甚至找不到有關它的文檔。可能嗎? 當前的代碼(PHP/Laravel)給了我一個工作鏈接,如下所示:https:// fb.me/1234567890。它在Facebook上發佈時也寫入應用程序名稱,但沒有圖像/縮略圖。我試過在http_build_query中放置一個「圖像」或「縮略圖」參數,但沒有運氣。無法將縮略圖/圖像添加到Facebook應用鏈接

$url = "https://graph.facebook.com/v2.6/app/app_link_hosts"; 
$ch = curl_init($url); 

# create form post data 
$metadata = "?item=" . $request->itemid; 

$deepLinkURL = "APP://" . $metadata; 

//echo $deepLinkURL; 
$androidArray = json_encode(array(array("url"   => $deepLinkURL, 
            "package" => "com.app.package", 
            "app_name"  => "APPNAME") 
          ) 
         ); 

$iosArray = json_encode(array(array("url"   => $deepLinkURL, 
            "app_store_id" => 45345345, 
            "app_name"  => "APPNAME") 
          ) 
         ); 

$webFallbackArray = json_encode(array("should_fallback" => false)); 


$formQuery = http_build_query(array("access_token" => "1234567890|XXXXXXXXXXXXXXXX", 
            "name"   => "APPNAME", 
            "android"  => $androidArray, 
            "ios"   => $iosArray, 
            "thumbnail"  => "http://i.imgur.com/upnywSR.jpg", 
            "web"   => $webFallbackArray) 
          ); 

    $path = base_path() . "/vendor/phpunit/phpunit/build/ca.pem"; 

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
    curl_setopt($ch, CURLOPT_CAINFO, $path); 

# options 
curl_setopt($ch, CURLOPT_POST, true); //1 
curl_setopt($ch, CURLOPT_POSTFIELDS, $formQuery); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

# get response 

$resultStatus = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
$jsonResponse = json_decode(curl_exec($ch), true); 
curl_close($ch); 



# decode response from facebook 

$appLinkId = ""; 



# get appLinkId 
foreach ($jsonResponse as $key => $val) { 

    # get status 
    if($key == "id") { 
     $appLinkId = $val; 
    } 
} 

# if response is good, need to request canonical URL from appLinkId 
$errorMessage = ""; 
$canonicalUrl = ""; 

if(!empty($appLinkId)) { 



    # create another instance of cURL to get the appLink object from facebook using the ID generated by the previous post request 
    $getAppLinkUrl = "https://graph.facebook.com/" . $appLinkId; 
    $ch2 = curl_init($getAppLinkUrl); 

    # cURL options 
    $queryString = http_build_query(array("access_token" => "206722406330430|XRV38UNZsFfRNNF1EkfikzDWkpk", 
              "fields"  => "canonical_url", 
              "pretty"  => true) 
            ); 
///////////////////// 
$path = base_path() . "/vendor/phpunit/phpunit/build/ca.pem"; 

curl_setopt($ch2, CURLOPT_SSL_VERIFYPEER, FALSE); 
    curl_setopt($ch2, CURLOPT_CAINFO, $path); 
///////////////// 


    curl_setopt($ch2, CURLOPT_URL, $getAppLinkUrl . "?" . $queryString); 
    curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true); 

    # get response 
    // $urlResponseJson = curl_exec($ch2); 
     $urlJsonResponse = json_decode(curl_exec($ch2), true); 
    curl_close($ch2); 

    # decode response from facebook 


    # parse response to get canonical URL 
    foreach ($urlJsonResponse as $key => $val) { 
     # get canonical URL 
     if($key == "canonical_url") { 
      $canonicalUrl = $val; 
     } 
    } 

    # check for result 
    if(empty($canonicalUrl)) { 
     $errorMessage = "Unable to retreive URL."; 
    } 

} else { 
    $errorMessage = "Unable to publish appLink."; 
} 

# encode response back to your app 
if(empty($errorMessage)) { 
    $response = json_encode(array("result"  => "success", 
            "canonical_url" => $canonicalUrl)); 
} else { 
    $response = json_encode(array("result" => "failed", 
            "errorMessage" => $errorMessage)); 
} 
return $response; 

回答

0

我試圖縮略圖添加到Facebook的應用程序的鏈接,但是,甚至找不到關於它的文檔。可能嗎?

由於https://developers.facebook.com/docs/applinks/hosting-api說,

如果您的應用程序沒有對內容的網站,你想分享至Facebook,你沒有公共網站的網址,你可以註釋以支持應用程序鏈接。對於這些類型的應用程序,Facebook提供App鏈接託管API,以便爲您提供App鏈接。

所以,如果您有想要分享的公共網頁的URL,那麼你應該相當註釋那些具有應用程序鏈接meta標籤 - 然後它會帶你通過OG這些URL指定的縮略圖:圖像。

如果這不是一個選項,那麼當您共享應用程序鏈接對象f.e.的規範URL時,您仍然可以嘗試指定縮略圖。通過Feed對話框。