Esempio n. 1
0
    def get(self, template_name='templates/authdouban/complete.html'):
        request_key = self.request.get('oauth_token')
        account = DoubanAccount.all().filter('request_key = ', request_key).get()

        if not account or account.request_key == 'ALREADY_AUTHENTICATED':
            reason = urllib.quote_plus('Request Key 不正确')
            return self.redirect('/account/douban/authorize/failure/?reason=%s' % reason)

        service = douban_service()
        key, secret, douban_id = service.client.get_access_token(account.request_key, account.request_secret)
        if key and secret and douban_id:
            account.set_access_key(key, secret, douban_id)
            account.remove_duplicate_accounts()
            account.remove_old_accounts()
            if settings.STORE_DOUBAN_PROFILE:
                entry = service.GetPeople('/people/%s' % douban_id)
                profile = DoubanProfile.insert_or_update(entry)
            return render_to_response(self, template_name, { 'douban_account': account })
        else:
            reason = urllib.quote_plus('获取 Access Key 失败')
            return self.redirect('/account/douban/authorize/failure/?reason=%s' % reason)