使用JavaScript/Node.js获取用户所有公共Github仓库

4

我想从Github获取给定用户的所有公共仓库,我尝试使用GET请求(这里)。当我用curl或在浏览器中尝试时,一切都正常,但是当我运行此代码时,它会给出http 403状态码。

var request = require('request');

request.get("https://api.github.com/users/:user")
    .on('response', function (response) {
        console.log(response.statusCode);
        console.log(JSON.stringify(response));
    });

我尝试使用这个Github API库,但无法解决身份验证问题。

var GithubApi = require("github");

var github = new GithubApi({});


github.authenticate({
    type: "oauth",
    token: "GIT_TOKEN"
});

var getUsersRepos = function (user) {
    github.repos.getAll({
        username: user
    }, function (err, res) {
        res.forEach(function (element) {
            console.log(`${element.name} - language: ${element.language} - issues: ${element.open_issues} - url: ${element.url}`);
        }, this);
    });
}

module.exports = {
    getRepos: getUsersRepos
};

但是当我输入我的令牌时,我只能获取到我的用户信息。有什么想法我做错了什么或者有更好的建议将不胜感激。


对于未经身份验证的请求,速率限制允许您每小时最多进行60个请求。您可能达到了这个限制吗? - TimoStaudinger
我现在使用GET /rate_limit检查了一下 - 剩余54个请求。 - tabula
1个回答

4

Github API要求请求必须包含有效的User-Agent头部信息:

如果您提供一个无效的User-Agent头部信息,您将会收到403 Forbidden的响应。

Github要求您在User-Agent头部信息中使用您的GitHub用户名或应用程序名称:

var request = require('request');

options =  {
    url: "https://api.github.com/users/:user",
    headers: {
        "User-Agent": "tabula"  // Your Github ID or application name
    }
}

request.get(options)
    .on('response', function (response) {
        console.log(response.statusCode);
        console.log(JSON.stringify(response));
    });

您的URL行末缺少逗号。 - user115014
@mjwatts:谢谢,已修复! - Leftium
1
GitHub明确要求您在User-Agent字符串中包含您的用户名或应用程序名称:https://developer.github.com/v3/#user-agent-required - kfb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接