2017-03-27 66 views
0

我有麻煩使用JavaScript獲取方法的POST請求到GitHub的API:POST請求GitHub的API

fetch('https://api.github.com/repos/organization/repo/issues?client_id=CLIENT_ID&client_secret=CLIENT_SECRET', { 
     method: 'post', 
     body: { 
     title: 'Title', 
     body: {body: "body", title: "title"} 
     } 
    }) 

我使用的是客戶端ID和客戶端密鑰,我從註冊了應用與GitHub的API:

enter image description here

任何幫助將不勝感激!謝謝!

+0

你得到哪些錯誤? –

+0

我剛剛得到一個通用的'加載資源失敗:服務器響應狀態爲404(未找到)' – kdipaolo

+0

@ rufer7 \t是的,這是正確的。我希望能夠通過我的應用程序中的REST通過回購提交新問題,而不是讓用戶登錄。感謝您的快速答覆。 – kdipaolo

回答

1

爲了實現你想要的,你必須實現描述爲here的web應用程序流程。

這意味着您必須將用戶重定向到https://github.com/login/oauth/authorize?client_id=CLIENT_ID&redirect_uri=REDIRECT_URI,以便他可以登錄到GitHub並授權您的應用程序。成功登錄後,GitHub將您重定向到redirect_uri,它通常指向您的應用程序的一個端點。此端點從URI中提取授權代碼以向GitHub請求訪問令牌(請參閱here)。只要具有訪問令牌,您就可以通過在Authorization標頭中發送OAuth令牌來使用GitHub API,如下所示。

Authorization: token OAUTH-TOKEN 
0

我想你需要訪問令牌來訪問Github API。如果你想手動嘗試這是我的建議步驟。 我會盡力從第一步解釋。


  1. 註冊應用。

    在你的github帳戶,去settings -> OAuth Applications This is the image when you register your application


  • 獲取客戶端ID和客戶端密鑰。

    This is the image after you receive Client ID and Client Secret


  • 詢問Github的代碼

    現在你有Client ID。轉到此網址。

    https://github.com/login/oauth/authorize?client_id=b420627027b59e773f4f&scope=user:email,repo

    請定義自己的client_idscope


  • 獲取Github的代碼

    記住授權回調URL輸入你註冊的時候? 轉到上面的鏈接後,您應該將代碼重定向到您的回調URL作爲參數。

    例如http://localhost:8080/github/callback?code=ada5003057740988d8b1


  • 提問並獲取訪問令牌

    現在,你需要做的http請求後與Client IDClient Secret,和Code你有作爲參數。

    請求

    POST https://github.com/login/oauth/access_token?client_id=a989cd9e8f0137ca6c29&client_secret=307d18600457b8d9eec1efeccee79e34c603c54b&code=ada5003057740988d8b1

    響應

    access_token=e72e16c7e42f292c6912e7710c838347ae178b4a&token_type=bearer


  • 發佈到Github

    現在你有了access token你可以使用它來訪問Github API。

  • fetch('https://api.github.com/repos/organization/repo/issues?access_token=e72e16c7e42f292c6912e7710c838347ae178b4a', { 
     
         method: 'post', 
     
         body: { 
     
         title: 'Title', 
     
         body: {body: "body", title: "title"} 
     
         } 
     
        })