3

我需要从我的 GitHub 私人仓库下载一个文件。因此,按照 GitHub 站点上的说明,我为我的凭据创建了一个 OAuth 令牌。

然后我执行了这个 PS 脚本:

$WebClient = New-Object -TypeName System.Net.WebClient
$WebClient.Headers.Add('Authorization','{OAuth token}')
$uri = "https://github.com/mycompany/myrepo/blob/master/myfile.zip"
$targetPath = "c:\temp"
$WebClient.DownloadFile($uri, $targetPath)

但是,返回 404。这很奇怪,因为我可以使用用于创建 OAuth 令牌的相同凭据通过登录到 GitHub 的浏览器$WebClient.DownloadFile()检索文件。$uri

4

1 回答 1

2

根据这个,您的两个选项是 HTTPS 基本身份验证和 OAuth 令牌。

因此,要将基本身份验证添加到您的网络客户端,请尝试以下操作:

$url = 'https://github.com/mycompany/myrepo/blob/master/myscript.ps1'
$wc = New-Object -TypeName System.Net.WebClient
$wc.Credentials = New-Object -TypeName System.Net.NetworkCredential 'username', 'password'
iex ($wc.DownloadString($url))

要使用 OAuth,您需要添加一个名为的标头Authorization并提供令牌字符串作为参数。用这个替换上面示例中的 NetworkCredential 行。

$wc.Headers.Add('Authorization','token your_token')

按照此处的说明使用curl创建 OAuth 令牌。这部分可以使用 PowerShell 完成,但它只是一次性的,因此您可以使用 GitHub 提供的示例。

于 2013-05-17T06:11:35.320 回答