UNPKG

7.97 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../../src/strategies/YoutubeStrategy.js"],"names":["YoutubeStrategy","Strategy","Youtube","type","config","scope","length","settings","clientId","project","passport","creds2","ytConfig","creds","clientID","clientSecret","method","headers","body","refresh_token","refreshToken","client_id","client_secret","grant_type","res","json","data","ret","error","error_description","status","app","log","lastError","lastErrorAt","Date","code","message","access_token","token","accessToken","providerId","Authorization","response","profile","avatar","title","names","split","firstName","lastName","slice","join","BaseStrategy"],"mappings":"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","sourcesContent":["import fetch from 'isomorphic-fetch';\nimport get from 'lodash/get';\nimport Youtube from 'passport-youtube-v3';\nimport { stringify } from 'qs';\n\nimport BaseStrategy from './BaseStrategy';\n\nexport default class YoutubeStrategy extends BaseStrategy {\n Strategy = Youtube.Strategy;\n type = 'youtube';\n\n getPassportStrategyConfig() {\n const config = super.getPassportStrategyConfig();\n return {\n ...config,\n scope: config.scope && config.scope.length ? config.scope : ['https://www.googleapis.com/auth/youtube.readonly'],\n };\n }\n\n getInfo() {\n return {\n ...super.getInfo(),\n settings: `https://console.developers.google.com/apis/credentials/oauthclient/${this.config.clientId}?project=${this.config.project}`,\n };\n }\n\n async updateTokens(passport, creds2) {\n /* eslint-disable no-param-reassign */\n const ytConfig = this.config;\n\n const creds = {};\n if (creds2 && (creds2.clientId || creds2.clientID) && creds2.clientSecret) {\n creds.clientId = creds2.clientId || creds2.clientID;\n creds.clientSecret = creds2.clientSecret;\n } else {\n creds.clientId = ytConfig.clientId || ytConfig.clientID;\n creds.clientSecret = ytConfig.clientSecret;\n }\n const res = await fetch('https://www.googleapis.com/oauth2/v4/token', {\n method: 'post',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: stringify({\n refresh_token: passport.refreshToken,\n client_id: creds.clientId,\n client_secret: creds.clientSecret,\n grant_type: 'refresh_token',\n }),\n });\n const data = await res.json();\n const ret = {};\n if (data.error) {\n if (data.error_description === 'Account has been deleted') {\n passport.status = 'removed';\n } else if (data.error_description === 'Token has been expired or revoked') {\n passport.status = 'expired';\n } else if (data.error === 'invalid_grant') {\n passport.status = 'invalid';\n } else if (data.error === 'unauthorized_client') {\n passport.status = 'unauthorized';\n } else {\n this.app.log.error('Passport update unknown error', data);\n passport.status = 'invalid';\n }\n passport.lastError = data;\n passport.lastErrorAt = new Date();\n\n throw {\n code: data.error,\n message: data.error_description,\n error: data,\n };\n }\n if (data.access_token) {\n passport.status = 'valid';\n passport.token = data.access_token;\n ret.accessToken = data.access_token;\n }\n // TODO: сначала протестить\n if (data.refresh_token) {\n // passport.refreshToken = data.refresh_token;\n // __DEV__ && console.log('TODO: сначала протестить', passport.refreshToken, data.refresh_token);\n ret.refreshToken = data.refresh_token;\n }\n return ret;\n\n // if (!config.scope) {\n // config.scope = [\n // 'https://www.googleapis.com/auth/youtube.readonly',\n // ];\n // }\n // return config;\n /* eslint-enable no-param-reassign */\n }\n\n async getProfile(passport) { //eslint-disable-line\n const response = await fetch(\n `https://www.googleapis.com/youtube/v3/channels?part=snippet&id=${passport.providerId}`,\n {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${passport.token}`,\n },\n },\n );\n const json = await response.json();\n const profile = {\n avatar: get(json, 'items[0].snippet.thumbnails.high.url'),\n title: get(json, 'items[0].snippet.title'),\n };\n\n if (profile.title) {\n const names = profile.title.split(' ');\n profile.firstName = names[0]; // eslint-disable-line\n profile.lastName = names.slice(1).join(' ');\n }\n\n return profile;\n }\n}\n"],"file":"YoutubeStrategy.js"}
\No newline at end of file