diff --git a/examples/enable_twofactor.js b/examples/enable_twofactor.js new file mode 100644 index 0000000..4871dae --- /dev/null +++ b/examples/enable_twofactor.js @@ -0,0 +1,97 @@ +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) { + doLogin(accountName, password); + }); +}); + +function doLogin(accountName, password, authCode) { + community.login({ + "accountName": accountName, + "password": password, + "authCode": authCode + }, function(err, sessionID, cookies, steamguard) { + if(err) { + if(err.message == 'SteamGuardMobile') { + console.log("This account already has two-factor authentication enabled."); + process.exit(); + return; + } + + if(err.message == 'SteamGuard') { + console.log("An email has been sent to your address at " + err.emaildomain); + rl.question("Steam Guard Code: ", function(code) { + doLogin(accountName, password, code); + }); + + return; + } + + console.log(err); + process.exit(); + return; + } + + console.log("Logged on!"); + community.enableTwoFactor(function(err, response) { + if(err) { + if(err.eresult == 2) { + console.log("Error: Failed to enable two-factor authentication. Do you have a phone number attached to your account?"); + process.exit(); + return; + } + + if(err.eresult == 84) { + console.log("Error: RateLimitExceeded. Try again later."); + process.exit(); + return; + } + + console.log(err); + process.exit(); + return; + } + + if(response.status != 1) { + console.log("Error: Status " + response.status); + process.exit(); + return; + } + + console.log("Writing secrets to twofactor_" + community.steamID.getSteamID64() + ".json"); + console.log("Revocation code: " + response.revocation_code); + fs.writeFile("twofactor_" + community.steamID.getSteamID64() + ".json", JSON.stringify(response, null, "\t")); + + promptActivationCode(response); + }); + }); +} + +function promptActivationCode(response) { + rl.question("SMS Code: ", function(smsCode) { + community.finalizeTwoFactor(response.shared_secret, smsCode, function(err) { + if(err) { + if(err.message == "Invalid activation code") { + console.log(err); + promptActivationCode(response); + return; + } + + console.log(err); + } else { + console.log("Two-factor authentication enabled!"); + } + + process.exit(); + }); + }); +}