oAuth2 凭据存储为 unicode

oAuth2 credentials being stored as unicode

我正在努力存储 oauth2 凭据,以便以后创建服务。

目前我的模型是这样的:

from django.db import models
from oauth2client.contrib.django_util.models import CredentialsField
from south.modelsinspector import add_introspection_rules

class oAuth(models.Model):
    siteid = models.CharField(max_length=100L, primary_key=True)
    credential = CredentialsField()

    add_introspection_rules([],["^oauth2client\.contrib\.django_util\.models\.CredentialsField"])

当我尝试保存我的凭据时:

credential = flow.step2_exchange(code)
storage = DjangoORMStorage(oAuth, 'siteid', site_id, 'credential')
storage.put(credential)

在我的数据库中,我存储了一个 unicode 字符串,然后无法使用以下方法将其转换为 oauth 对象:

storage = DjangoORMStorage(oAuth, 'siteid', site_id, 'credential')
credential = storage.get()
return credential

我得到的凭据是之前存储的 unicode,我无法对其执行 .authorize 方法,这是我需要做的,

我是不是哪里搞糊涂了?

确保您的数据库设置为存储 utf-8。 Django 需要那个。

https://docs.djangoproject.com/en/1.11/ref/unicode/#creating-the-database

这花了我一段时间才找到(在询问堆栈溢出之前我已经为此苦苦挣扎了一天左右)但是..

返回的 unicode 需要返回到一个 oauth 对象中,我通过实际调用发现 this

解决方法:

storage = DjangoORMStorage(oAuth, 'siteid', site_id, 'credential')
credential = storage.get()
credential = CredentialsField().to_python(credentials)
return credential

credential 现在可以作为常规 oauth 对象调用