| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- const {
- UniCloudError
- } = require('../../../../common/error')
- const {
- resolveUrl
- } = require('../../../../common/utils')
- const {
- callQQOpenApi
- } = require('../normalize')
- module.exports = class Auth {
- constructor (options) {
- this.options = Object.assign({
- baseUrl: 'https://graph.qq.com',
- timeout: 5000
- }, options)
- }
- async _requestQQOpenapi ({ name, url, data, options }) {
- const defaultOptions = {
- method: 'GET',
- dataType: 'json',
- dataAsQueryString: true,
- timeout: this.options.timeout
- }
- const result = await callQQOpenApi({
- name: `auth.${name}`,
- url: resolveUrl(this.options.baseUrl, url),
- data,
- options,
- defaultOptions
- })
- return result
- }
- async getUserInfo ({
- accessToken,
- openid
- } = {}) {
- const url = '/user/get_user_info'
- const result = await this._requestQQOpenapi({
- name: 'getUserInfo',
- url,
- data: {
- oauthConsumerKey: this.options.appId,
- accessToken,
- openid
- }
- })
- return {
- nickname: result.nickname,
- avatar: result.figureurl_qq_1
- }
- }
- async getOpenidByToken ({
- accessToken
- } = {}) {
- const url = '/oauth2.0/me'
- const result = await this._requestQQOpenapi({
- name: 'getOpenidByToken',
- url,
- data: {
- accessToken,
- unionid: 1,
- fmt: 'json'
- }
- })
- if (result.clientId !== this.options.appId) {
- throw new UniCloudError({
- code: 'APPID_NOT_MATCH',
- message: 'appid not match'
- })
- }
- return {
- openid: result.openid,
- unionid: result.unionid
- }
- }
- async code2Session ({
- code
- } = {}) {
- const url = 'https://api.q.qq.com/sns/jscode2session'
- const result = await this._requestQQOpenapi({
- name: 'getOpenidByToken',
- url,
- data: {
- grant_type: 'authorization_code',
- appid: this.options.appId,
- secret: this.options.secret,
- js_code: code
- }
- })
- return result
- }
- }
|