UNPKG

node-socialite

Version:

Socialite is an OAuth2 authentication tool for Node.js

71 lines (70 loc) 2.63 kB
'use strict'; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Coding = void 0; const BaseProvider_1 = require("../Core/BaseProvider"); const User_1 = require("../Core/User"); /** * @see [OAuth认证](https://coding.net/help/openapi) */ class Coding extends BaseProvider_1.BaseProvider { constructor(config) { super(config); this._scopes = ['user', 'user:email']; this.teamUrl = ''; let teamUrl = this._config.get('team_url'); if (!teamUrl) { throw new Error('Missing required config [team_url]'); } if (teamUrl.substring(0, 8) !== 'https://' && teamUrl.substring(0, 7) !== 'http://') { throw new Error('Invalid team_url'); } this.teamUrl = teamUrl.replace(/\/+$/gm, ''); } getAuthUrl() { return this.buildAuthUrlFromBase(`${this.teamUrl}/oauth_authorize.html`); } getTokenUrl() { return `${this.teamUrl}/api/oauth/access_token`; } getUserByToken(token) { return __awaiter(this, void 0, void 0, function* () { let response = yield this.doRequest({ url: `${this.teamUrl}/api/me`, method: 'get', params: { 'access_token': token, }, }); let data = response.data; return data; }); } mapUserToObject(user) { return new User_1.User({ id: user['id'] || null, nickname: user['name'] || null, name: user['name'] || null, email: user['email'] || null, avatar: user['avatar'] || null, }); } getTokenFields(code) { return { client_id: this.getClientId(), client_secret: this.getClientSecret(), code, grant_type: 'authorization_code', }; } } exports.Coding = Coding; Coding.NAME = 'coding';