如何使用 PHP Bitly v4 缩短 URL?

2023-12-04

我有 Bitly 的代码v3并且运行良好。

<?php
$login = 'login-code-here';
$api_key = 'api-key-here';
$long_url = 'https://stackoverflow.com/questions/ask';

$ch = curl_init('http://api.bitly.com/v3/shorten?login='.$login.'&apiKey='.$api_key.'&longUrl='.$long_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
$res = json_decode($result, true);
echo $res['data']['url']; // bit.ly/2PcG3Fg
?>

然而,在新版本中如何做到这一点呢?上面的示例使用 API 密钥,但它已被弃用,取而代之的是 OAuth 请求。

如何使用 Bitly 缩短 URLv4?


获取通用访问令牌

转到 Bitly,单击右上角的汉堡菜单 > 设置 > 高级设置 > API 支持 > 单击链接通用访问令牌。输入您的密码并生成通用令牌。这就是您将用于身份验证的内容。

See https://dev.bitly.com/v4_documentation.html并寻找使用单一帐户进行申请部分。

身份验证已根据以下内容进行了一些更改https://dev.bitly.com/v4/#section/Application-using-a-single-account.

V4 中对 Bitly API 进行身份验证的方式发生了变化。以前,您的身份验证令牌将作为每个请求的 access_token 查询参数提供。相反,V4 要求将令牌作为每个请求的授权标头的一部分提供。

Code

请参阅此文档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);

Request

您发送的 JSON 将如下所示:

{"long_url":"https:\/\/stackoverflow.com\/questions\/ask"}

Response

{
   "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"
   }
}

EDIT

评论中有要求仅查看短链接输出。为此,只需调整代码,如下所示:

<?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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 PHP Bitly v4 缩短 URL? 的相关文章

  • 在 JQuery ui 自动完成中显示图像

    我有一个带有 JQuery ui 自动完成功能的脚本 可以完美运行 有一个显示用户名字和姓氏的搜索过程 但在我的数据库中 还有用户的图片 我想将其显示在带有名字和姓氏的建议中 数据库中pic包含图片url 剧本 function searc
  • 如何使用 php 从字符串中提取日期

    我需要从字符串中提取日期 下面是我的代码和字符串 str Updated status to Masters Software Engineering Enrolled Documents to Send on 03 06 2014 14
  • 从远程托管上的 PHP 获取 PHP 错误日志

    是否有 PHP 函数或其他方式以字符串形式获取 PHP 错误日志 我需要这个 因为我无法访问在其他人的服务器上运行的站点的错误日志 他提出通过电子邮件将错误日志发送给我 但这不太方便 有什么方法可以将错误日志输出到 PHP 页面吗 我意识到
  • 将字符串分解为标记,保持引用的子字符串完整

    我不知道我在哪里看到它 但是谁能告诉我如何使用 php 和 regex 来完成这个任务 this is a string that has quoted text inside 我希望能够像这样爆炸它 0 this 1 is 2 a 3 s
  • 如何在PHP中获取div中的所有链接

    我想从另一个网站打开一个页面 并提取一个中的所有链接 href div of class layout 2 2 在此页面中 我如何使用 PHP 来做到这一点 我想复制layout 2 2中的每个链接this https url 网页 这是我
  • node-mongodb-native的插入性能

    我正在使用 MongoDB 测试 Node js 的性能 我知道其中每一个都很好 彼此独立 但我正在尝试一些测试来感受它们 我遇到了这个问题 但无法确定来源 问题 我正在尝试在单个 Node js 程序中插入 1 000 000 条记录 它
  • 无法在 Laravel 8 中运行迁移:SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: 名称或服务未知 [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我不明白为什么我的迁移在全新安装 Laravel 8 时失败 这就是我得到的结果 Illuminate Database
  • 使用 php 脚本的电子邮件管道

    你好 我想将所有电子邮件 到达我的收件箱 转发到 php 脚本并检索电子邮件内容并将其保存在文件中 因此 我正确地添加了具有管道路径的电子邮件转发器 转发地址 电子邮件受保护 cdn cgi l email protection 管道到程序
  • 没有得到 popen 的完整回复

    嗨 我正在使用 popen 运行一个进程 handle popen python scriptos py r while feof handle data fgets handle echo gt data 我只从返回 5 行的进程中获取
  • 如何解决 注意:未定义索引:第 21 行 C:\xampp\htdocs\invmgt\manufactured_goods\change.php 中的 id [重复]

    这个问题在这里已经有答案了 我的 PHP 代码有一个问题 显示 注意 未定义的索引 我确信它非常简单 因为我是初学者 所以我不太清楚到底出了什么问题 所以请帮助我 这是代码
  • 如何检查 $row['column_name'] 是否返回空 php mysql

    我有一个带有列的表格 id name phone describe 当我从这个表中获取值时 我正在使用 row mysql fetch array query 现在我想检查是否 row describe 返回空值 如何查看php 您可以使用
  • 优化数据可视化 Web 应用程序的性能

    我正在重写 3 年前编写的数据可视化网络工具 从那时起 浏览器的 JavaScript 引擎变得更快 所以我正在考虑将部分工作从服务器转移到客户端 在页面上 数据在表格和地图 或图表 中可视化 它使用相同的数据 但以不同的方式 因此准备显示
  • laravel 5.3 新的 Auth::routes()

    最近开始使用laravel 5 3写博客 但是运行后出现一个问题php artisan make auth 当我运行这个时 它会在我的web php 这是其中的代码 Auth routes Route get home HomeContro
  • AFNetworking 上传图片

    我看过一些例子 但我认为我的问题可能出在 PHP 中 我正在尝试使用 AFNetworking 将图像从 iPhone 上传到服务器 这是我的 obj c 代码 IBAction uploadButtonClicked id sender
  • 如何在之前的 Facebook 身份验证后自动安全地让用户登录?

    用户抱怨他们必须过于频繁地登录 如果身份验证完全基于 Facebook OAuth 那么用户如何在下次访问该页面时自动登录 用户流程示例 用户点击 使用 Facebook 登录 用户通过 Facebook 进行身份验证并被重定向回网站 用户
  • PHPMailer 验证失败

    当我尝试在工作中使用 Windows Server 2012 上的 PHPMailer 来使用 SMTP 发送报告电子邮件时 出现身份验证失败错误 我在域上使用服务器管理员帐户 我非常确定密码是正确的 检查下面的代码 require PHP
  • Apache 虚拟主机始终重定向到 /dashboard

    我遇到的问题似乎是一个常见问题 但我找到的任何解决方案似乎都不适合我的情况 我正在尝试设置一个虚拟主机 以便我可以通过 mytestdomain local 访问我的 Laravel 安装的公共文件 但是当我在 google chrome
  • Doctrine2:入门教程“没有要处理的元数据类”

    我已经将本教程的第一部分运行了三遍 到目前为止 在这里或其他地方进行的大量搜索都无法帮助我使其发挥作用 我收到 没有要处理的元数据类 当我尝试时 php vendor bin doctrine orm schema tool update
  • 使用 PHP 将 SVG 图像转换为 PNG

    我正在开发一个网络项目 该项目涉及动态生成的美国地图 根据一组数据为不同的州着色 这个 SVG 文件为我提供了一张很好的美国空白地图 并且很容易更改每个州的颜色 困难在于 IE 浏览器不支持 SVG 因此为了让我使用 svg 提供的便捷语法
  • 一些基本的 PHP 问题 [已关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我只是有一些基本的 php 问题来加深我对学习的理解 但我找不到简单的答案 我有一个 php ajax 应用程序 它生成 mysql

随机推荐

  • 将单词添加到一行的最后一个单词之前

    我想在一行的最后一个单词前面添加一个目录名称 该行具有以下格式 100644 bfadfab6f98b8fa1e9989fe16b2bf0fb13ffd39e 0 IoneFile where I表示一个tab and 表示行尾 该行是由生
  • 如何在 Typescript Enum 中查找具有值的键?

    我想搜索一个具有值的枚举 并获取它的键 这就是我现在所拥有的 private find value MyEnum string for const key in MyEnum if value MyEnum key return key r
  • 如何在 java 中将节点附加到现有 XML 文件

    public static void addALLToXML Collection
  • return 语句上的 Perl 引用和取消引用

    我正在学习 perl 并且有一个与参考文献相关的问题 我正在研究 get id 函数 如果我回来 self gt id 我将得到两个无法运行的数组地址 c 以我的理解 a是参考和 a 是数组并且 a 0 会返回值0吗 这是我第一次在 sta
  • bitParity - 查找整数中的奇数位

    我必须创建一个函数bitParity int x 接受一个整数并返回1如果有奇数个0的位形式为x and 0否则 Ex bitParity 5 0 bitParity 7 1 然而 这很困难 因为我只能使用位运算符来解决这个问题 lt lt
  • 我想在 Rstudio 中更改 --max-ppsize

    我读过了如何在 R 中设置最大 ppsize 我也有同样的问题 我目前在 Rstudio 工作 我需要将 max ppsize 设置为更大的值 这是我的方法 gt setwd C Program Files R R 3 3 1 bin gt
  • Emacs 用增量序列替换正则表达式

    我正在尝试找出一种方法 将文本文件中的字符串替换为增量超过 1 的数字 我正在尝试将以下几行转为这样 result A in S1 S2 txt result A in S1 S2 txt result A in S1 S2 txt res
  • php mPDF,无法设置字体系列和字体大小

    好吧 在花了这么多时间阅读他们的文档和我的测试之后 我决定向 SO 社区寻求帮助 我使用 mPDF 从 HTML 生成 pdf 图书馆工作正常 pdf 已生成等 但我无法根据需要设置字体系列和字体大小 我尝试过的代码 mpdf new mP
  • shell编程中的“导出”有什么作用? [复制]

    这个问题在这里已经有答案了 据我所知 无论前面是否有 export 变量赋值都是相同的 这是为了什么 导出的变量如 HOME and PATH可供 shell 运行的其他程序使用 继承 并将它们导出为环境变量 以及这些其他程序运行的程序等
  • 使用当前连接从 sql 存储过程调用 dll 函数

    我可以使用打开的连接从存储过程调用 dll 吗 我有一个从 SQL Server 获取数据的 dll 当我从存储过程调用它时 我不想打开新连接 谢谢 这是一个例子 public class Class1 public static SqlS
  • JavaScript Promise .then() 在事件循环中到底是如何处理的?

    我对如何将以下测试代码放入 JS 事件循环中感到困惑 var p1 new Promise function resolve reject setTimeout function resolve 1 100 var p2 new Promi
  • 用JS从outlook导入联系人

    我需要将 Outlook 中的联系人导入到 Web 应用程序中 我认为用JS可以做到这一点 但我不知道如何做 谁能给我一个解决我的问题的示例代码 您可以使用activex和javascript导出outlook联系人 但需要用户在浏览器中启
  • 如何将H2数据库嵌入到交付给客户端的jar文件中?

    我在嵌入式模式下使用 H2 数据库作为桌面应用程序 当我将应用程序压缩到 jar 文件中时 数据库文件被省略 因此 当我运行 MyApplication jar 时 没有任何效果 将 h2 jar 文件嵌入 包含 连接 MyApplicat
  • 删除 JSON 中的 Null 值并更新 JSON

    我通过使用 Newtonsoft 序列化列表将 JSON 数组作为字符串 如下所示 ID 1 Name somename Class 12 Section null ID null Name somename Class 13 Sectio
  • MapView 上的 java.util.ConcurrentModificationException

    fellas 很多天以来我都面临着非常奇怪的问题 我正在尝试经常更新覆盖 因此 有时当我触摸地图时 我会收到 java util ConcurrentModificationException 或者有时当地图尝试更新叠加层时 我会收到 ja
  • 如何使用 Json.NET 序列化和反序列化数组的 ArrayList

    我需要在应用程序中使用 JSON NET 将对象序列化 反序列化为 json Object 具有 ArrayList 属性类型 其中包含字符串数组 为了模拟它 我编写了以下单元测试 public class JsonTests public
  • 仅在释放模式下按 HOME 时才会终止 Activity

    首先 我有两个 Activity Splash 和 MainActivity 仅支持纵向 在 MainActivity 中 我有很多片段使用幻灯片菜单 我想在用户离开 MainActivity 时保留当前片段 这是我的尝试 int curr
  • 无法在 CodeIgniter 中使用会话类检索会话 ID

    我的控制器中有这段代码 class Upload center extends Controller function construct parent Controller this gt load gt model auth model
  • 在 Automator 中编辑文本

    我想创建一个 Automator 服务 它可以获取所选文本并将其替换为编辑后的版本 i e 所选文本将类似于 这是所选文本 然后输出将采用该文本并输出类似 一些预定义的开始 这是选定的文本 这是选定的文本 我以前曾对文件名做过类似的事情 但
  • 如何使用 PHP Bitly v4 缩短 URL?

    我有 Bitly 的代码v3并且运行良好