Change: switch google to code flow

This commit is contained in:
eight 2019-10-12 17:44:08 +08:00
parent 73dc6c77a6
commit 90f01aae5c

View File

@ -12,9 +12,14 @@ const tokenManager = (() => {
tokenURL: 'https://api.dropboxapi.com/oauth2/token' tokenURL: 'https://api.dropboxapi.com/oauth2/token'
}, },
google: { google: {
flow: 'token', flow: 'code',
clientId: '283762574871-v3fq18bmocd1fvo4co7pfad0rcb4bti8.apps.googleusercontent.com', clientId: '283762574871-d4u58s4arra5jdan2gr00heasjlttt1e.apps.googleusercontent.com',
clientSecret: 'J0nc5TlR_0V_ex9-sZk-5faf',
authURL: 'https://accounts.google.com/o/oauth2/v2/auth', authURL: 'https://accounts.google.com/o/oauth2/v2/auth',
authQuery: {
access_type: 'offline'
},
tokenURL: 'https://oauth2.googleapis.com/token',
scopes: ['https://www.googleapis.com/auth/drive.appdata'] scopes: ['https://www.googleapis.com/auth/drive.appdata']
}, },
onedrive: { onedrive: {
@ -88,6 +93,9 @@ const tokenManager = (() => {
if (provider.scopes) { if (provider.scopes) {
query.scope = provider.scopes.join(' '); query.scope = provider.scopes.join(' ');
} }
if (provider.authQuery) {
Object.assign(query, provider.authQuery);
}
const url = `${provider.authURL}?${stringifyQuery(query)}`; const url = `${provider.authURL}?${stringifyQuery(query)}`;
return launchWebAuthFlow({ return launchWebAuthFlow({
url, url,
@ -110,17 +118,21 @@ const tokenManager = (() => {
return obj; return obj;
} }
const code = params.get('code'); const code = params.get('code');
const body = {
code,
grant_type: 'authorization_code',
client_id: provider.clientId,
redirect_uri: provider.redirect_uri || chrome.identity.getRedirectURL()
};
if (provider.clientSecret) {
body.client_secret = provider.clientSecret;
}
return fetch(provider.tokenURL, { return fetch(provider.tokenURL, {
method: 'POST', method: 'POST',
headers: { headers: {
'Content-Type': 'application/x-www-form-urlencoded' 'Content-Type': 'application/x-www-form-urlencoded'
}, },
body: stringifyQuery({ body: stringifyQuery(body)
code,
grant_type: 'authorization_code',
client_id: provider.clientId,
redirect_uri: provider.redirect_uri || chrome.identity.getRedirectURL()
})
}) })
.then(r => { .then(r => {
if (r.ok) { if (r.ok) {
@ -133,7 +145,7 @@ const tokenManager = (() => {
}); });
}) })
.then(result => .then(result =>
console.log(result) && 0 || chromeLocal.set({ chromeLocal.set({
[k.TOKEN]: result.access_token, [k.TOKEN]: result.access_token,
[k.EXPIRE]: result.expires_in ? Date.now() + result.expires_in * 1000 : undefined, [k.EXPIRE]: result.expires_in ? Date.now() + result.expires_in * 1000 : undefined,
[k.REFRESH]: result.refresh_token [k.REFRESH]: result.refresh_token