我一直在使用GitHub for Mac应用程序,但根据朋友的建议,决定给Tower一个机会,因为它也可以处理Beanstalk帐户.
安装试用版并输入我的GitHub用户名和密码后,我收到了以下错误:
error: could not lock config file /Users/joshferrara/.gitconfig: Permission denied
Run Code Online (Sandbox Code Playgroud)
我只是好奇,如果有人知道是什么导致了这个或者它是否与我使用Tower有任何关联.任何帮助是极大的赞赏!
文件权限:
-rw-rw-rw- 1 joshferrara staff 130 Nov 22 17:14 /Users/joshferrara/.gitconfig
Run Code Online (Sandbox Code Playgroud)
父目录的权限:
drwxr-xr-x 74 501 staff 2516 Apr 26 14:46 /Users/joshferrara
Run Code Online (Sandbox Code Playgroud) 我想gh-pages从Github API 创建分支.是否有捷径可寻?
如果没有,我将如何从Github API创建孤立分支?
我正在使用GitHub webhook将事件传递给我的应用程序(GitHub的Hubot的一个实例),并使用sha1秘密进行保护.
我正在使用以下代码验证传入webhooks上的哈希值
crypto = require('crypto')
signature = "sha1=" + crypto.createHmac('sha1', process.env.HUBOT_GITHUB_SECRET).update( new Buffer request.body ).digest('hex')
unless request.headers['x-hub-signature'] is signature
response.send "Signature not valid"
return
Run Code Online (Sandbox Code Playgroud)
在webhook中传递的X-Hub-Signature标头看起来像这样
X-Hub-Signature:sha1 = 1cffc5d4c77a3f696ecd9c19dbc2575d22ffebd4
我按照GitHub的文档准确传递密钥和数据,但哈希总是不同.
这是GitHub的文档. https://developer.github.com/v3/repos/hooks/#example
这是我最有可能误解的部分
secret:作为X-Hub-Signature标头与HTTP请求一起传递的可选字符串.使用秘密作为密钥,将此标头的值计算为正文的HMAC十六进制摘要.
谁能看到我哪里出错了?
我需要通过github api访问组织中的私有存储库.
我使用我的个人访问令牌,但它提供了我不希望它拥有的私人仓库的访问权限.
是否可以创建只访问一个组织的访问令牌,而不是所有私有存储库?
在过去的几天里,我一直试图向github api提出这个帖子请求,但不幸的是,响应又回来了"坏消息"
这是我们在post请求中使用节点中的https请求发送的代码段 -
这是发布数据
var issueData = JSON.stringify({
"title":title,
"body":comment
});
Run Code Online (Sandbox Code Playgroud)
这是选项文件
var options = {
host: 'api.github.com',
path: '/repos/sohilpandya/katasohil/issues?access_token='+sessions.token,
headers: {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:24.0) Gecko/20100101 Firefox/24.0',
},
method: 'POST'
};
Run Code Online (Sandbox Code Playgroud)
这是https请求
var requestaddIssue = https.request(options, function(responseFromIssues){
responseFromIssues.setEncoding('utf8');
responseFromIssues.on('data', function(chunk){
console.log('>>>>chunk>>>>>',chunk);
issueBody += chunk;
});
responseFromIssues.on('end',function(issueBody){
console.log(issueBody);
});
});
requestaddIssue.write(issueData);
requestaddIssue.end();
Run Code Online (Sandbox Code Playgroud)
我尝试了另一种方法,其中用户的身份验证令牌位于标题中
'Authentication': 'OAuth '+ sessions.token (where we are storing token inside sessions)
Run Code Online (Sandbox Code Playgroud)
但是块响应似乎总是在控制台日志中返回以下内容.
{
"message": "Not Found",
"documentation_url": "https://developer.github.com/v3/issues/#create-an-issue"
}
Run Code Online (Sandbox Code Playgroud)
我在apigee尝试过相同的操作,似乎工作正常并返回正确的响应.希望有人可以在上面的代码中找到导致此错误消息错误的次要错误.
我正在使用Postman创建匿名Gists.Gists已成功创建,但当我尝试修补它们时,我得到:
{
"message": "Not Found",
"documentation_url": "https://developer.github.com/v3/gists/#edit-a-gist"
}
Run Code Online (Sandbox Code Playgroud)
我使用的URL是:
https://api.github.com/gists/14694f43065a32ec28ad
Run Code Online (Sandbox Code Playgroud)
如果我做GET,它工作正常.如果我执行PATCH,我会收到一条错误消息.
这有什么不对?
我特意与GitHub合作,但这似乎很普遍.
GitHub文档状态[格式化已由我修改]:
有三种方法可以通过GitHub API v3进行身份验证....
- 基本认证
- OAuth2令牌(在标头中发送)
- OAuth2令牌(作为参数发送)
- OAuth2密钥/秘密
[我假设第二个和第三个项目实际上被认为是单一的"身份验证方式"但是,根据该部分中的格式,"失败的登录限制"也可能被误解为"验证方式"为没有明确的"三种方式"清单.]
以上"以编程方式获取"链接的文本开始:
如果您需要少量令牌,实施Web流程可能很麻烦.相反,可以使用OAuth Authorizations API使用基本身份验证创建令牌.要为特定OAuth应用程序创建令牌,您必须提供其在OAuth应用程序设置页面上找到的客户端ID和密码,该页面是从GitHub上的OAuth应用程序列表链接的.如果您的OAuth应用程序打算为一个用户创建多个令牌,则应使用指纹来区分它们.
通过另一种身份验证形式的授权验证?
让我们一句一句地解析上述所有内容.
如果您需要少量令牌,实施Web流程可能很麻烦.
好吧,希望我真棒的非网站应用程序会有很多用户,所以我需要很多令牌,对吧?那么这是不是意味着,我应该"实施网络流程"?我怀疑它确实如此.
相反,可以使用OAuth Authorizations API使用基本身份验证创建令牌.
现在,这非常令人困惑.我希望我的非网站应用程序(NAWP)代表我的用户与GitHub进行交互,我希望他们能够避免未经身份验证的用户API请求速率限制.我不能只用GitHub注册我的应用程序,并在我的请求中包含我的注册客户端ID和秘密,因为:
此方法仅应用于服务器到服务器调用.您永远不应与任何人共享您的客户机密,或将其包含在客户端浏览器代码中.
因此,我想使用我的NAWP向GitHub或代表用户进行身份验证.
因此,我可以使用特殊授权API创建身份验证令牌,以访问常规GitHub API,但我必须首先使用基本身份验证进行身份验证.大.一个问题 - 我通过基本身份验证提供哪些凭据才能访问授权API?矿?一个特殊的GitHub帐户只适用于我的应用程序?用户的?
我猜我应该使用用户的凭据,并且用户必须信任我的NAWP,一旦使用它们为自己创建身份验证令牌,就会立即忘记这些凭据.好吧,这似乎不太理想,但我现在愿意继续.
要为特定OAuth应用程序创建令牌,您必须提供其在OAuth应用程序设置页面上找到的客户端ID和密码,该页面是从GitHub上的OAuth应用程序列表链接的.
等待.WTF.我使用我的用户的GitHub用户名和密码(或用户必须自己生成的令牌?)进行身份验证,他们可以让我的NAWP永远使用,特别是如果我只是想访问公共信息但是避免速率限制?) ,然后我的NAWP必须通过发出请求来请求生成OAuth令牌,其中一个必需参数是......"要为其创建令牌的40个字符OAuth app客户端密钥."
这似乎不对.
在文档的第一部分中,引用了这个问题的顶部,在"OAuth2密钥/秘密"子部分下,它写成:
这应该仅用于服务器到服务器方案.不要将OAuth应用程序的客户端密钥泄露给您的用户.
此外,在"增加OAuth应用程序的未经身份验证的速率限制"子部分中,写入:
如果您的OAuth应用程序需要以更高的速率限制进行未经身份验证的调用,则可以将应用程序的客户端ID和机密作为查询字符串的一部分传递.
...
此方法仅应用于服务器到服务器调用.您永远不应与任何人共享您的客户机密,或将其包含在客户端浏览器代码中.
我错过了什么吗?我肯定错过了什么.因为当然我无法安全地分发GitHub在我的NAWP中为我生成的客户端秘密.
如果您的OAuth应用程序打算为一个用户创建多个令牌,则应使用指纹来区分它们.
这根本不是混乱(我不是讽刺).如果我的NAWP的单个实例被多个用户使用,那么我只需要包含某种标识符来区分我需要或想要创建的任何标记; 非常简单.
但理解这句话并没有消除我对前三个的困惑.
那么,是否或者不可能代表GitHub用户使用OAuth对NAWP 进行安全身份验证? …
我想知道哪种是使用GitHub API(Rest API v3)从git存储库获取最新提交信息的最佳方法.
选项1:GET /repos/:owner/:repo/commits/master
我可以假设响应的对象'commit'是分支主控的最新提交吗?
选项2:GET /repos/:owner/:repo/git/commits/5a2ff
或者调用,一个通过从master获取HEAD ref来获取sha,然后使用返回的sha获取提交信息.
谢谢您的帮助
In the Rest v3, I could easily query a commit and get the changed files and patch for each file: https://developer.github.com/v3/repos/commits/#get-a-single-commit
I don't seem to be able to retrieve this info using the new v4 graphQL, does anyone have a clue how?
当您转到GitHub时,在Issues下,它将所有未解决的问题作为HTML页面拉出。我们希望实现一个仪表板,以显示存储库中的所有问题(按标签分组),包括那些未正确标记的问题。
这是相应的存储库列表问题API。
当我最初使用jQuery和Javascript时,现在使用PHP进行概念验证,因为其内置的会话处理功能使我可以使用同一页面登录,让GitHub进行身份验证和回调并继续。但这对我来说并不重要,任何语言都可以。
我已经设法通过OAUTH2访问GitHub API,但是当我通过https://api.github.com/orgs/{org}/repos它获取存储库列表时,它会显示为一个空数组。
因为/orgs/{org}/reposAPI返回一个空数组,所以相应的/repos/{org}/{repo}/issuesAPI 当然会返回一个错误。
编辑:请参阅此后续解决方案!很高兴我终于可以正常工作了!
github-api ×10
github ×6
git ×4
node.js ×2
cryptography ×1
gist ×1
git-tower ×1
graphql ×1
oauth ×1
oauth-2.0 ×1