如何通过 API 接受 Github 仓库邀请?
How to accept a Github repository invitation through API?
我正在查看 Github API,它允许您通过 API 端点获取所有存储库邀请(参见 https://developer.github.com/v3/repos/invitations/#list-invitations-for-a-repository)。这很好用:
from requests.auth import HTTPBasicAuth
import requests
login = 'xxx'
password = 'yyy'
url = 'https://api.github.com/user/repository_invitations'
repository_invites = requests.get(
url, auth=HTTPBasicAuth(login, password)).json()
print('response: ' + str(repository_invites))
然后我可以像这样 url
得到每个请求:
for repository_invite in repository_invites:
print('url: ' + repository_invite.get('url'))
返回的内容如下:
url: https://api.github.com/user/repository_invitations/123456789
Github 还提到您可以在 https://developer.github.com/v3/repos/invitations/#accept-a-repository-invitation 接受邀请,其中提到
PATCH /user/repository_invitations/:invitation_id
我不明白的是如何告诉 Github 如何接受它。此端点似乎用于删除和接受邀请。 Github 在 https://developer.github.com/v3/#http-verbs 谈论 PATCH
,其中提到您可以使用 POST
或发送 PATCH
请求,但不是如何。所以问题是,我怎么知道我应该在 PATCH
调用中发送什么?例如,我试过这个:
result = requests.patch(repository_invite.get('url'), json.dumps({'accept': True}))
print('result: ' + str(result.json()))
回馈:
result: {'message': 'Invalid request.\n\n"accept" is not a permitted key.', 'documentation_url': 'https://developer.github.com/v3'}
为了调用 API 端点,您需要对您的 Github 用户进行身份验证,并且您需要发送 Patch
调用(需要 data/headers 如果你需要它们)。这是一个工作示例:
for repository_invite in repository_invites:
repository_id = repository_invite.get('id')
accept_invite = requests.patch('https://api.github.com/user/repository_invitations/'+ str(repository_id),
data={}, headers={},
auth=HTTPBasicAuth(github_username, github_password))
如果没有身份验证,Patch
调用将返回一个 404 响应代码,因为出于明显的安全目的,它只能在登录后访问。如果您调用端点 user/repository_invitations/
后跟 ID Github 将自动接受邀请。
我正在查看 Github API,它允许您通过 API 端点获取所有存储库邀请(参见 https://developer.github.com/v3/repos/invitations/#list-invitations-for-a-repository)。这很好用:
from requests.auth import HTTPBasicAuth
import requests
login = 'xxx'
password = 'yyy'
url = 'https://api.github.com/user/repository_invitations'
repository_invites = requests.get(
url, auth=HTTPBasicAuth(login, password)).json()
print('response: ' + str(repository_invites))
然后我可以像这样 url
得到每个请求:
for repository_invite in repository_invites:
print('url: ' + repository_invite.get('url'))
返回的内容如下:
url: https://api.github.com/user/repository_invitations/123456789
Github 还提到您可以在 https://developer.github.com/v3/repos/invitations/#accept-a-repository-invitation 接受邀请,其中提到
PATCH /user/repository_invitations/:invitation_id
我不明白的是如何告诉 Github 如何接受它。此端点似乎用于删除和接受邀请。 Github 在 https://developer.github.com/v3/#http-verbs 谈论 PATCH
,其中提到您可以使用 POST
或发送 PATCH
请求,但不是如何。所以问题是,我怎么知道我应该在 PATCH
调用中发送什么?例如,我试过这个:
result = requests.patch(repository_invite.get('url'), json.dumps({'accept': True}))
print('result: ' + str(result.json()))
回馈:
result: {'message': 'Invalid request.\n\n"accept" is not a permitted key.', 'documentation_url': 'https://developer.github.com/v3'}
为了调用 API 端点,您需要对您的 Github 用户进行身份验证,并且您需要发送 Patch
调用(需要 data/headers 如果你需要它们)。这是一个工作示例:
for repository_invite in repository_invites:
repository_id = repository_invite.get('id')
accept_invite = requests.patch('https://api.github.com/user/repository_invitations/'+ str(repository_id),
data={}, headers={},
auth=HTTPBasicAuth(github_username, github_password))
如果没有身份验证,Patch
调用将返回一个 404 响应代码,因为出于明显的安全目的,它只能在登录后访问。如果您调用端点 user/repository_invitations/
后跟 ID Github 将自动接受邀请。