@@ -172,8 +172,8 @@ def get(self):
172172 if self .request .get ('token' , None ) is not None :
173173 link += '&token=' + self .request .get ('token' )
174174
175- if tokenversion is not None :
176- link += '&tokenversion=' + str (tokenversion )
175+ if tokenversion is not None :
176+ link += '&tokenversion=' + str (tokenversion )
177177
178178 notes = ''
179179 if n .has_key ('notes' ):
@@ -396,7 +396,8 @@ def get(self):
396396 'service' : provider ['display' ],
397397 'appname' : settings .APP_NAME ,
398398 'longappname' : settings .SERVICE_DISPLAYNAME ,
399- 'id' : provider ['id' ]
399+ 'id' : provider ['id' ],
400+ 'tokenversion' : self .request .get ('tokenversion' , '' )
400401 }
401402
402403 template = JINJA_ENVIRONMENT .get_template ('cli-token.html' )
@@ -414,6 +415,12 @@ def post(self):
414415 provider , service = find_provider_and_service (id )
415416 display = provider ['display' ]
416417
418+ tokenversion = None
419+ try :
420+ tokenversion = int (self .request .POST .get ('tokenversion' ))
421+ except :
422+ pass
423+
417424 try :
418425 data = self .request .POST .get ('token' )
419426 content = base64 .urlsafe_b64decode (str (data ) + '=' * (- len (data ) % 4 ))
@@ -444,6 +451,28 @@ def post(self):
444451
445452 resp = json .loads (content )
446453
454+ # v2 tokens are just the provider name and the refresh token
455+ # and they have no stored state on the server
456+ if tokenversion == 2 :
457+ authid = 'v2:' + id + ':' + resp ['refresh_token' ]
458+ fetchtoken = dbmodel .create_fetch_token (resp )
459+ dbmodel .update_fetch_token (fetchtoken , authid )
460+
461+ # Report results to the user
462+ template_values = {
463+ 'service' : display ,
464+ 'appname' : settings .APP_NAME ,
465+ 'longappname' : settings .SERVICE_DISPLAYNAME ,
466+ 'authid' : authid ,
467+ 'fetchtoken' : fetchtoken
468+ }
469+
470+ template = JINJA_ENVIRONMENT .get_template ('logged-in.html' )
471+ self .response .write (template .render (template_values ))
472+
473+ logging .info ('Returned refresh token for service %s' , id )
474+ return
475+
447476 keyid , authid = create_authtoken (id , resp )
448477
449478 fetchtoken = dbmodel .create_fetch_token (resp )
0 commit comments