Github Web API授权问题 - 返回“未找到”

时间:2017-09-03 17:18:49

标签: node.js github authorization github-api

由于我没有找到任何有同样问题的人,我希望这是一件简单的事情。而且我还不错。

这是一个Node / Express应用程序,我正在尝试连接到Githubs Web API并检索某个回购的问题。我已经生成了一个个人令牌,我正在使用它进行基本授权。当我尝试连接时,我得到:“ Not found ”。 Github说,在需要身份验证的情况下,他们返回404/403,我得到404,所以它必须是身份验证的东西。回购有问题。

令牌应该没有问题,我选择“repo”作为访问范围。

实际上我不知道我在做什么做HTTP请求,但我已经尝试过请求和http。所以除其他事项外,我想知道是否有授权标题是错误的。

我使用请求粘贴我现在拥有的代码,并返回正文。非常感谢任何帮助。

const githubToken = process.env.TOKEN;

    let options = {
        url: "https://api.github.com/repos/myOrg/myRepo/issues/",
        headers: {
            "Authorization": "Basic " + githubToken,
            "User-Agent": "Mozilla/5.0",
            "Content-Type": "application/json"
        }
    };

    let requestCB = function(error, response, body) {
        if (error) {
            console.log(error);
        } else if (!error && response.statusCode == 200) {
            let info = JSON.parse(body);
            console.log("Success");
            console.log(info);
        } else {
            console.log(response);
            console.log(body);
        }
    };

    request(options, requestCB);

响应的结束和身体:

 read: [Function],
 body: '{"message":"Not Found","documentation_url":"https://developer.github.com/v3"}' }
{"message":"Not Found","documentation_url":"https://developer.github.com/v3"}

编辑:

所以我找到了帮助,在下面发布解决方案。我想问题是必须包含accept-header。也许主机名,路径和uri必须采用这种格式。

let options = {
        headers: {
            "User-Agent": "GitHub-username",
            "Accept": "application/vnd.github.v3+json",
            "Authorization": "token " + githubToken
        },
        hostname: "api.github.com",
        path: "/repos/org/repo/issues",
        uri: "https://api.github.com/repos/org/repo/issues",
        method: "GET"
    };

1 个答案:

答案 0 :(得分:1)

基本身份验证不需要令牌

基本身份验证

curl -u "username" https://api.github.com

因此,在您的请求中,您可以省略githubToken

请参阅docs for more information about types of authentication

使用令牌

var request = require('request');

var options = {
    url: 'https://api.github.com/?access_token=OAUTH-TOKEN',
    headers: {
        "Authorization": "token ",
        "User-Agent": "Mozilla/5.0",
        "Content-Type": "application/json"
    }
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

请求(选项,回调);