获取通用访问令牌
进入您的 Bitly,单击右上角的汉堡菜单> "设置" > "高级设置" > "API支持" > 单击链接 "通用访问令牌"。输入密码并生成一个通用令牌。这就是您将用于身份验证的内容。
请参见https://dev.bitly.com/v4_documentation.html,查找“使用单个帐户的应用程序”部分。
身份验证方式已经根据https://dev.bitly.com/v4/#section/Application-using-a-single-account 进行了更改。
如何通过 Bitly API 进行身份验证在 V4 中发生了变化。以前,您的身份验证令牌将作为每个请求的 access_token 查询参数提供。V4 要求令牌作为每个请求的 Authorization 标头的一部分提供。
代码
请参阅此文档https://dev.bitly.com/v4/#operation/createFullBitlink,了解 Bitly 的预期信息。
在 v4 中,您可以像这样在标头中使用通用令牌作为承载者进行每个请求:
<?php
$long_url = 'https://stackoverflow.com/questions/ask';
$apiv4 = 'https://api-ssl.bitly.com/v4/bitlinks';
$genericAccessToken = 'your-token';
$data = array(
'long_url' => $long_url
);
$payload = json_encode($data);
$header = array(
'Authorization: Bearer ' . $genericAccessToken,
'Content-Type: application/json',
'Content-Length: ' . strlen($payload)
);
$ch = curl_init($apiv4);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
$result = curl_exec($ch);
print_r($result);
请求
您发送的 JSON 将会像这样:
{"long_url":"https:\/\/stackoverflow.com\/questions\/ask"}
响应
{
"created_at":"1970-01-01T00:00:00+0000",
"id":"shortcode-link-id-here",
"link":"shortcode-link-here",
"custom_bitlinks":[
],
"long_url":"https://stackoverflow.com/questions/ask",
"archived":false,
"tags":[
],
"deeplinks":[
],
"references":{
"group":"group-link-here"
}
}
编辑
评论中有请求只显示短链接输出。为了做到这一点,只需按以下方式调整代码:
<?php
$long_url = 'https://stackoverflow.com/questions/ask';
$apiv4 = 'https://api-ssl.bitly.com/v4/bitlinks';
$genericAccessToken = 'your-token';
$data = array(
'long_url' => $long_url
);
$payload = json_encode($data);
$header = array(
'Authorization: Bearer ' . $genericAccessToken,
'Content-Type: application/json',
'Content-Length: ' . strlen($payload)
);
$ch = curl_init($apiv4);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
$result = curl_exec($ch);
$resultToJson = json_decode($result);
if (isset($resultToJson->link)) {
echo $resultToJson->link;
}
else {
echo 'Not found';
}
结果(假设上面的文件是test.php)
php test.php
bit.ly/2ZbYD4Z