Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否仍然可以通过编程方式获取私有github repo的zipball?_Git_Oauth_Github_Repository - Fatal编程技术网

是否仍然可以通过编程方式获取私有github repo的zipball?

是否仍然可以通过编程方式获取私有github repo的zipball?,git,oauth,github,repository,Git,Oauth,Github,Repository,我们有必要从私人回购中获得一笔资金。对于公共应用程序,通过GithubAPI或手动操作都非常简单(https://github.com/user/repo/zipball/master). 但私人回购呢?即使有oAuth令牌,也不太清楚该怎么做。我似乎没有问题从私有repos下载zipball。我使用与您指定的格式相同的格式,它可以完美地工作 我使用OAuth2获取存储库,但我使用您给定的格式为zip球构建链接。我是在家里做这件事的 如果您希望获得OAuth2令牌,只需使用该格式,它非常简单。尽

我们有必要从私人回购中获得一笔资金。对于公共应用程序,通过GithubAPI或手动操作都非常简单(https://github.com/user/repo/zipball/master). 但私人回购呢?即使有oAuth令牌,也不太清楚该怎么做。

我似乎没有问题从私有repos下载zipball。我使用与您指定的格式相同的格式,它可以完美地工作

我使用OAuth2获取存储库,但我使用您给定的格式为zip球构建链接。我是在家里做这件事的

如果您希望获得OAuth2令牌,只需使用该格式,它非常简单。尽管这并不完全符合您的问题:

这是我如何从GitHub获得OAuth2令牌的

更新

@贾亚乔。我只是像您指定的那样构建URL,OAuth2标记甚至没有用于它。我的令牌允许我做的就是在创建标记之前获取所有用户的私有数据。但它的工作没有问题

我想我之所以能够下载zipball,是因为URL实际上是到*的,而且因为OAuth2我现在已经登录了,所以我有权访问该URL——听起来好像你没有,所以你会收到404错误


您可以尝试向页面发送请求,如果收到错误响应,则会提示用户先登录,然后在请求zipball时,您应该会得到它,没有问题。

编辑:这不再有效


带卷曲:

curl -L -F "login=$USER" -F "token=$TOKEN" https://github.com/$USER/$REPO/$PKGTYPE/$BRANCHorTAG
其中,
$TOKEN
是github配置文件上的API令牌,而不是用于与APIv3通信的oAuth2令牌

$USER
是令牌所连接的用户帐户,不一定是回购所属的组织/其他用户。
$USER
的第二个实例是回购的用户/帐户

$REPO
是专用存储库的名称

$PKGTYPE
是tarball还是zipball
$BRANCHorTAG
是一个分支,与master类似,或者是提交的标记名

$USER
的第一个实例必须能够访问属于
$USER
的第二个实例的回购


我在任何地方都找不到这个文档,所以如果您需要更详细的信息,我也有一些关于它的文章。

您可以使用基本身份验证或基于令牌的方法。有关更多详细信息,请参阅。

新备选方案

curl -H "Authorization: token ab499f3b..." \
-L https://api.github.com/repos/godzilla/my_priv_repo/tarball > wut.tar.gz
因为给出的已被接受的答案不再有效,所以我想解释一下我是如何通过github API中的新更改来实现这一点的

新的下载Api链接

首先,我在这里找到了有关下载存档的信息:

公开回购

如果是公开回购,那就很容易。。。你可以做:

curl -L https://api.github.com/repos/pengwynn/octokit/tarball > octokit.tar.gz
私人回购

如果是私有回购,则需要通过转到设置,然后选择“开发者设置”/“来创建oAuth令牌。 我创建了一个个人代币

然后,根据下一页上的说明,我了解了如何获得您有权获得的私人回购:

完整代码

curl -H "Authorization: token ab499f3b..." \
-L https://api.github.com/repos/godzilla/my_priv_repo/tarball > wut.tar.gz

请务必用您的实际代币替换
ab499f3b…

我遇到了同样的问题,这对我有效(截至2015年2月):

oAuth作为头解决方案对我不起作用,但起作用的是将密钥填充到用户名中并指定类型。然后它给出了一个302来重定向正确的链接


Verbose命令确实帮助我解决了我正在使用的凭据是否被接受的问题(404 vs 401)

cURL,它允许对HTTP头和请求参数进行操作。例如:

旋度-L
-H“授权:令牌$token”
--输出hello.tar.zip


curl-L——输出hello.tar.zip

。。。每次尝试时都会出现“未找到”错误。另外,当使用相同的格式时,我指定不确定在哪里放置令牌?。。你能在哪里链接具体的代码行吗?@jayarjo更新了我的答案-基本上用户必须登录才能使用URL。然后你将不会得到404,但我会获取令牌(我的意思是,我在尝试该url时就得到了它)。但这就是你所做的一切吗?也许我忽略了一些简单的事情…@jayarjo-我想你错过了我说的话。因为用户必须授权他们的应用程序,所以他们必须登录GitHub。因此,他们可以访问链接。如果用户未登录,我的链接也将不起作用。同样,用户必须登录GitHub才能使您的链接工作(登录www.GitHub.com-而不是您的应用程序)。但是,如果用户未登录,您如何为用户获取令牌?我肯定错过了一些东西…不确定这是否有效:这肯定不再有效。生成“必须启用Cookie才能使用GitHub”。我想你应该使用api.github.com,但是找不到URL这个“Zipball”是什么?请你再给我一点描述。