mirror of
https://github.com/DoctorMcKay/node-steamcommunity.git
synced 2026-08-19 21:23:28 +08:00
Compare commits
18 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9a3138aa35 | ||
|
|
839d8b51e3 | ||
|
|
ddf0221489 | ||
|
|
64aaca66be | ||
|
|
aac26212d7 | ||
|
|
d8d99a804f | ||
|
|
f47afae1ea | ||
|
|
8d90aac203 | ||
|
|
f1bfd8b3af | ||
|
|
579fc04c1c | ||
|
|
58927dc937 | ||
|
|
018cacac59 | ||
|
|
26effb27fe | ||
|
|
5880e922ab | ||
|
|
fe007811a5 | ||
|
|
7b882c8439 | ||
|
|
6c4cb9e62f | ||
|
|
2300081d43 |
35
CONTRIBUTING.md
Normal file
35
CONTRIBUTING.md
Normal file
@@ -0,0 +1,35 @@
|
||||
# Contributing to SteamCommunity
|
||||
|
||||
Thanks for your interest in making `SteamCommunity` better! I'd appreciate it if you read over this document quickly
|
||||
before you submit your issue or pull request. It'll make things go much smoother.
|
||||
|
||||
# Issues
|
||||
|
||||
Submitting an issue?
|
||||
|
||||
- If you're **reporting a bug**, please include all relevant details.
|
||||
- A descriptive title helps for one. Titles of just "Error" or "It doesn't work" really don't help.
|
||||
- Please describe what you're trying to do, what actually happens, and what you can do to reproduce the problem.
|
||||
- If you have an error message or a crash, please include the full text of the error message and the stack trace.
|
||||
- Include the relevant snippet of your code. Wrap it in \`\`\`js /* code */ \`\`\` and GitHub [will format it nicely for you](https://help.github.com/articles/github-flavored-markdown/#syntax-highlighting).
|
||||
- If you're **requesting a feature**, please be descriptive and understanding.
|
||||
- A good title makes a difference. Please briefly describe what you're requesting in the title.
|
||||
- Be descriptive in the issue body, too. Say what you want to do, and ideally what the method should be named.
|
||||
- Be understanding if I don't think that your feature request falls within the scope of this module.
|
||||
- If you're **asking a question** or **requesting support**, please don't submit a GitHub issue.
|
||||
- Issues are only for problems directly relating to the module's code.
|
||||
- Please [post a thread in the dedicated forum](https://dev.doctormckay.com/forum/8-node-steamcommunity/) instead.
|
||||
|
||||
# Pull Requests
|
||||
|
||||
Submitting a pull request? Great! Thanks for contributing your time and code! Please keep the following in mind.
|
||||
|
||||
- Please follow the existing code style.
|
||||
- Tabs for indentation
|
||||
- camelCase for variables and functions
|
||||
- Opening braces on the same line as the if/for/while statement
|
||||
- etc.
|
||||
- Please avoid breaking changes. If you make a breaking change that can be done in a backwards-compatible manner, I won't accept it.
|
||||
- Please don't increment the version number in `package.json`. I'll do that myself when I publish it to npm.
|
||||
- Please include a brief description of your change in the pull request if it's not immediately apparent from the code.
|
||||
- Be understanding if I don't think that your change falls within the scope of this module.
|
||||
15
README.md
15
README.md
@@ -9,12 +9,15 @@ This module provides an easy interface for the Steam Community website. This mod
|
||||
|
||||
It supports Steam Guard and CAPTCHAs.
|
||||
|
||||
# Installation
|
||||
|
||||
Install it from npm:
|
||||
|
||||
$ npm install steamcommunity
|
||||
**Have a question about the module or coding in general? *Do not create a GitHub issue.* GitHub issues are for feature
|
||||
requests and bug reports. Instead, post in the [dedicated forum](https://dev.doctormckay.com/forum/8-node-steamcommunity/).
|
||||
Such issues may be ignored!**
|
||||
|
||||
# Documentation
|
||||
|
||||
As of version 1.0.0, documentation is on the [GitHub wiki](https://github.com/DoctorMcKay/node-steamcommunity/wiki).
|
||||
Documentation is available on the [GitHub wiki](https://github.com/DoctorMcKay/node-steamcommunity/wiki).
|
||||
|
||||
# Support
|
||||
|
||||
Report bugs on the [issue tracker](https://github.com/DoctorMcKay/node-steamcommunity/issues) or ask questions
|
||||
on the [dedicated forum](https://dev.doctormckay.com/forum/8-node-steamcommunity/).
|
||||
|
||||
@@ -18,10 +18,10 @@ SteamCommunity.prototype.getConfirmations = function(time, key, callback) {
|
||||
if(err) {
|
||||
if (err.message == "Invalid protocol: steammobile:") {
|
||||
err.message = "Not Logged In";
|
||||
self._notifySessionExpired(err);
|
||||
}
|
||||
|
||||
callback(err);
|
||||
self._notifySessionExpired(err);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -38,17 +38,18 @@ SteamCommunity.prototype.httpRequest = function(uri, options, callback, source)
|
||||
continued = true;
|
||||
|
||||
if (err) {
|
||||
callback(err);
|
||||
if (callback) {
|
||||
callback(err);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
self.request(options, function (err, response, body) {
|
||||
var hasCallback = !!callback;
|
||||
var httpError = options.checkHttpError !== false && self._checkHttpError(err, response, callback);
|
||||
var communityError = !options.json && options.checkCommunityError !== false && self._checkCommunityError(body, httpError ? function () {
|
||||
} : callback); // don't fire the callback if hasHttpError did it already
|
||||
var tradeError = !options.json && options.checkTradeError !== false && self._checkTradeError(body, httpError || communityError ? function () {
|
||||
} : callback); // don't fire the callback if either of the previous already did
|
||||
var communityError = !options.json && options.checkCommunityError !== false && self._checkCommunityError(body, httpError ? function () {} : callback); // don't fire the callback if hasHttpError did it already
|
||||
var tradeError = !options.json && options.checkTradeError !== false && self._checkTradeError(body, httpError || communityError ? function () {} : callback); // don't fire the callback if either of the previous already did
|
||||
|
||||
self.emit('postHttpRequest', requestID, source, options, httpError || communityError || tradeError || null, response, body, {
|
||||
"hasCallback": hasCallback,
|
||||
@@ -104,14 +105,14 @@ SteamCommunity.prototype._checkHttpError = function(err, response, callback) {
|
||||
SteamCommunity.prototype._checkCommunityError = function(html, callback) {
|
||||
var err;
|
||||
|
||||
if(html && html.match(/<h1>Sorry!<\/h1>/)) {
|
||||
if(typeof html === 'string' && html.match(/<h1>Sorry!<\/h1>/)) {
|
||||
var match = html.match(/<h3>(.+)<\/h3>/);
|
||||
err = new Error(match ? match[1] : "Unknown error occurred");
|
||||
callback(err);
|
||||
return err;
|
||||
}
|
||||
|
||||
if (html && html.match(/g_steamID = false;/) && html.match(/<h1>Sign In<\/h1>/)) {
|
||||
if (typeof html === 'string' && html.match(/g_steamID = false;/) && html.match(/<h1>Sign In<\/h1>/)) {
|
||||
err = new Error("Not Logged In");
|
||||
callback(err);
|
||||
this._notifySessionExpired(err);
|
||||
@@ -122,7 +123,7 @@ SteamCommunity.prototype._checkCommunityError = function(html, callback) {
|
||||
};
|
||||
|
||||
SteamCommunity.prototype._checkTradeError = function(html, callback) {
|
||||
if (!html) {
|
||||
if (typeof html !== 'string') {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -61,7 +61,15 @@ SteamCommunity.prototype.finalizeTwoFactor = function(secret, activationCode, ca
|
||||
return;
|
||||
}
|
||||
|
||||
finalize(token);
|
||||
SteamTotp.getTimeOffset(function(err, offset, latency) {
|
||||
if (err) {
|
||||
callback(err);
|
||||
return;
|
||||
}
|
||||
|
||||
diff = offset;
|
||||
finalize(token);
|
||||
});
|
||||
});
|
||||
|
||||
function finalize(token) {
|
||||
@@ -144,14 +152,8 @@ SteamCommunity.prototype.disableTwoFactor = function(revocationCode, callback) {
|
||||
return;
|
||||
}
|
||||
|
||||
if(body.response.status == 1) {
|
||||
callback(null);
|
||||
return;
|
||||
}
|
||||
|
||||
var error = new Error("Cannot remove authenticator (" + body.response.status + ")");
|
||||
error.eresult = body.response.status;
|
||||
callback(error);
|
||||
// success = true means it worked
|
||||
callback(null);
|
||||
}, "steamcommunity");
|
||||
});
|
||||
};
|
||||
|
||||
61
examples/disable_twofactor.js
Normal file
61
examples/disable_twofactor.js
Normal file
@@ -0,0 +1,61 @@
|
||||
var SteamCommunity = require('../index.js');
|
||||
var ReadLine = require('readline');
|
||||
var fs = require('fs');
|
||||
|
||||
var community = new SteamCommunity();
|
||||
var rl = ReadLine.createInterface({
|
||||
"input": process.stdin,
|
||||
"output": process.stdout
|
||||
});
|
||||
|
||||
rl.question("Username: ", function(accountName) {
|
||||
rl.question("Password: ", function(password) {
|
||||
rl.question("Two-Factor Auth Code: ", function(authCode) {
|
||||
rl.question("Revocation Code: R", function(rCode) {
|
||||
doLogin(accountName, password, authCode, "", rCode);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
function doLogin(accountName, password, authCode, captcha, rCode) {
|
||||
community.login({
|
||||
"accountName": accountName,
|
||||
"password": password,
|
||||
"twoFactorCode": authCode,
|
||||
"captcha": captcha
|
||||
}, function(err, sessionID, cookies, steamguard) {
|
||||
if(err) {
|
||||
if(err.message == 'SteamGuard') {
|
||||
console.log("This account does not have two-factor authentication enabled.");
|
||||
process.exit();
|
||||
return;
|
||||
}
|
||||
|
||||
if(err.message == 'CAPTCHA') {
|
||||
console.log(err.captchaurl);
|
||||
rl.question("CAPTCHA: ", function(captchaInput) {
|
||||
doLogin(accountName, password, authCode, captchaInput);
|
||||
});
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
console.log(err);
|
||||
process.exit();
|
||||
return;
|
||||
}
|
||||
|
||||
console.log("Logged on!");
|
||||
community.disableTwoFactor("R" + rCode, function(err) {
|
||||
if(err) {
|
||||
console.log(err);
|
||||
process.exit();
|
||||
return;
|
||||
}
|
||||
|
||||
console.log("Two-factor authentication disabled!");
|
||||
process.exit();
|
||||
});
|
||||
});
|
||||
}
|
||||
@@ -14,12 +14,13 @@ rl.question("Username: ", function(accountName) {
|
||||
});
|
||||
});
|
||||
|
||||
function doLogin(accountName, password, authCode, twoFactorCode) {
|
||||
function doLogin(accountName, password, authCode, twoFactorCode, captcha) {
|
||||
community.login({
|
||||
"accountName": accountName,
|
||||
"password": password,
|
||||
"authCode": authCode,
|
||||
"twoFactorCode": twoFactorCode
|
||||
"twoFactorCode": twoFactorCode,
|
||||
"captcha": captcha
|
||||
}, function(err, sessionID, cookies, steamguard) {
|
||||
if(err) {
|
||||
if(err.message == 'SteamGuardMobile') {
|
||||
@@ -39,6 +40,15 @@ function doLogin(accountName, password, authCode, twoFactorCode) {
|
||||
return;
|
||||
}
|
||||
|
||||
if(err.message == 'CAPTCHA') {
|
||||
console.log(err.captchaurl);
|
||||
rl.question("CAPTCHA: ", function(captchaInput) {
|
||||
doLogin(accountName, password, authCode, twoFactorCode, captchaInput);
|
||||
});
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
console.log(err);
|
||||
process.exit();
|
||||
return;
|
||||
|
||||
@@ -14,11 +14,12 @@ rl.question("Username: ", function(accountName) {
|
||||
});
|
||||
});
|
||||
|
||||
function doLogin(accountName, password, authCode) {
|
||||
function doLogin(accountName, password, authCode, captcha) {
|
||||
community.login({
|
||||
"accountName": accountName,
|
||||
"password": password,
|
||||
"authCode": authCode
|
||||
"authCode": authCode,
|
||||
"captcha": captcha
|
||||
}, function(err, sessionID, cookies, steamguard) {
|
||||
if(err) {
|
||||
if(err.message == 'SteamGuardMobile') {
|
||||
@@ -29,13 +30,22 @@ function doLogin(accountName, password, authCode) {
|
||||
|
||||
if(err.message == 'SteamGuard') {
|
||||
console.log("An email has been sent to your address at " + err.emaildomain);
|
||||
rl.question("Steam Guard Code: ", function(code) {
|
||||
rl.question("Steam Guard Code: ", function (code) {
|
||||
doLogin(accountName, password, code);
|
||||
});
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if(err.message == 'CAPTCHA') {
|
||||
console.log(err.captchaurl);
|
||||
rl.question("CAPTCHA: ", function(captchaInput) {
|
||||
doLogin(accountName, password, authCode, captchaInput);
|
||||
});
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
console.log(err);
|
||||
process.exit();
|
||||
return;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "steamcommunity",
|
||||
"version": "3.19.0",
|
||||
"version": "3.19.6",
|
||||
"description": "Provides an interface for logging into and interacting with the Steam Community website",
|
||||
"keywords": ["steam", "steam community"],
|
||||
"homepage": "https://github.com/DoctorMcKay/node-steamcommunity",
|
||||
@@ -15,9 +15,9 @@
|
||||
"dependencies": {
|
||||
"request": "^2.61.0",
|
||||
"node-bignumber": "^1.2.1",
|
||||
"steamid": "^0.3.1",
|
||||
"steamid": "^1.0.0",
|
||||
"xml2js": "^0.4.11",
|
||||
"cheerio": "^0.19.0",
|
||||
"cheerio": "0.19.0",
|
||||
"async": "^1.4.2",
|
||||
"steam-totp": "^1.3.0"
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user