2011-10-24 107 views
4

我正在嘗試使用Github v3 API - 我已經實現了所需的OAuth流程,並且運行良好。Github v3 API - 創建REPO

現在我正在嘗試一些Repos API端點(http://developer.github.com/v3/repos/)。

到目前爲止,我能夠得到使用我的回購協議的列表:GET /用戶/回購 然而,當我嘗試使用POST /用戶/回購創建一個回購協議,我得到一個404

有什麼想法我可能做錯了?

Joubert

回答

7

請問您能告訴我們您做了多少HTTP請求?聽起來好像你正在使用錯誤的路徑,可能。但爲了給出一個可靠的答案,而不是一個瘋狂的猜測,我們需要看到你的請求,包括你如何發送你的令牌,只是用'xxx'或其他東西來掩蓋它。

我會告訴你在此期間爲例請求,即工作:

curl -XPOST -H 'Authorization: token S3CR3T' https://api.github.com/user/repos -d '{"name":"my-new-repo","description":"my new repo description"}'

你會需要更換,當然OAuth令牌:S3CR3T

5

我有同樣的問題。你使用你的oauth訪問令牌獲得404的原因是,當你授權給github時,你還需要通過你想要的範圍。例如,在標題中,您應該看到「X-OAuth-Scopes:repo,user」,這意味着此用戶具有對其配置文件和存儲庫的讀/寫訪問權限。一旦你設置了正確的範圍,你應該可以做POST/PUT請求。

查看您是否擁有正確的權限。你可以做如下的事情。用您的訪問令牌替換XXXXXXX。

curl -I https://api.github.com/user?access_token=XXXXXXXX 
+0

這幫了我。我試圖用範圍「public_repo」,但沒有奏效。切換到範圍「回購」確實奏效。我不需要詢問「用戶」。 – jrburke

1

該腳本可以讓你在令牌和項目名稱爲變量讀取,所以你可以在腳本

#!/usr/bin/env bash -u 
# 

TOKEN=`cat token_file` 
PROJECT=myproject 

curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' -d '{"name": "'"$PROJECT"'"}' https://api.github.com/user/repos?access_token=$TOKEN 
+0

我創建了一個基於此示例的shell腳本,並將幾個Subversion項目遷移到Github https://gist.github.com/4062655 –

2

用它來創建存儲庫作爲用戶,你可以使用個人訪問令牌和基本身份驗證,當您在命令行上亂作一團並啓用2FA時可能會更簡單。

curl -d '{"name":"test"}' -u githubuser:personaccesstoken https://api.github.com/user/repos 

在此處創建個人訪問令牌https://github.com/settings/tokens並確保它具有「回購」範圍。