如何使用 PowerShell 使用 Bitly V4 API 缩短 URL?

How to shorten URL with Bitly V4 API using PowerShell?

我目前使用下面的 PowerShell 脚本通过 Bitly V3 API 缩短任何 URL。我希望有人可以帮助使用 Bitly V4 做同样的事情 API.

function New-ShortURL {
    param (
            [Parameter(Position=0, Mandatory=$true, ValueFromPipeline=$True, ValueFromPipelineByPropertyName=$True)]
            $URL
        )
    #https://app.bitly.com API
    $OAuthToken = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    $MyURL=Invoke-WebRequest -Uri https://api-ssl.bitly.com/v3/shorten -Body @{access_token=$OAuthToken;longURL=$URL} -Method Get
    $MyURLjson = $MyURL.Content | convertfrom-json
    $MyURLjson.data.url
}

通读 documentation on changes to v4,它指出,

API 的先前版本使用查询参数来提交令牌。这不再适用于 v4.0。应使用 OAuth Bearer Token 规范制作令牌,并在请求中使用授权 header。

意思是,你不能这样做,

$body = @{access_token=$OAuthToken;longURL=$URL}

相反,您必须将访问令牌放在请求的 header 中。

$header = @{Authorization = "Bearer $OAuthToken"

the method ...似乎是POST而不是GET。

您的请求应如下所示,

$body = @{long_url= "https://whosebug.com/questions/60418169/how-to-shorten-url-with-bitly-v4-api-using-powershell?noredirect=1#comment106889121_60418169"} | convertto-json

$OAuthToken = "=========="
$header = @{Authorization="Bearer $OAuthToken"; Accept="application/json"; "Content-Type"="application/json"}

$MyURL=Invoke-WebRequest -Uri https://api-ssl.bitly.com/v4/shorten -Body $body -header $header -Method Post
$MyURLjson = $MyURL.Content | ConvertFrom-Json
$MyURLjson.link