Не удается добавить миниатюру / изображение в ссылку приложения Facebook

php facebook laravel facebook-php-sdk

55 просмотра

1 ответ

415 Репутация автора

Я пытался добавить эскиз к ссылке на приложение Facebook, но не могу найти документацию по этому поводу. Является ли это возможным? Текущий код (PHP / Laravel) дает мне рабочую ссылку, которая выглядит следующим образом: https: // fb.me/1234567890. Он также записывает имя приложения при публикации в Facebook, но без изображения / миниатюры. Я попытался поместить параметр "image" или "thumbnail" в http_build_query, но безуспешно.

    $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;
Автор: Rad Источник Размещён: 18.07.2016 05:52

Ответы (1)


0 плюса

73120 Репутация автора

Я пытался добавить эскиз к ссылке на приложение Facebook, но не могу найти документацию по этому поводу. Является ли это возможным?

Нет.

Как говорит https://developers.facebook.com/docs/applinks/hosting-api ,

Если в вашем приложении нет веб-сайта для контента, которым вы хотите поделиться в Facebook, у вас нет общедоступных веб-адресов, которые можно пометить для поддержки ссылок на приложения. Для этих типов приложений Facebook предоставляет API-интерфейс хостинга ссылок приложений, который будет размещать ссылки приложений для вас.

Поэтому, если у вас есть общедоступные веб-URL-адреса, которыми вы хотите поделиться, то лучше аннотировать их с помощью метатегов для ссылок на приложения - тогда он получит миниатюру, указанную для этих URL-адресов, через og: image.

Если это не вариант, то вы все равно можете попытаться указать миниатюру, когда делитесь каноническим URL-адресом объекта «Ссылка на приложение», например, через диалоговое окно «Лента».

Автор: CBroe Размещён: 19.07.2016 08:41
Вопросы из категории :
32x32