无法访问 python 社交身份验证的数据
Can't access to python social auth's data
我使用的是 Django 1.9.5,python 社交验证提供的数据有问题。我得到了数据,但我无法访问它。这是我的代码
def save_auth_data_session(request):
if request.user:
twitter = request.user.social_auth.get(provider ='twitter')
print twitter.extra_data['access_token']
终端给我这个错误
""TypeError: string indices must be integers""
如果我执行 "print vars(twitter)",这就是我得到的数据
{'user_id': 123, 'uid': u'2413671427750', '_user_cache': <User: quintana>, '_state': <django.db.models.base.ModelState object at 0x7fa3d86fc2d0>, 'provider': u'twitter', 'extra_data': u'{"access_token": {"oauth_token_secret": "Afkasdasdas21zxbxcbn", "oauth_token": "2468cxcpqsldkenI56", "x_auth_expires": "0", "user_id": "455793463", "screen_name": "puertoRico"}, "id": 455793463}', 'id': 123}
正如我从 print vars(twitter)
的输出中看到的那样 - extra_data 存储序列化字典(字符串)'extra_data': u'{...}'
。
所以需要先反序列化
import json
twitter = request.user.social_auth.get(provider ='twitter')
extra_data = json.loads(twitter.extra_data) # will give you a python dictionary
print extra_data['access_token']
我使用的是 Django 1.9.5,python 社交验证提供的数据有问题。我得到了数据,但我无法访问它。这是我的代码
def save_auth_data_session(request):
if request.user:
twitter = request.user.social_auth.get(provider ='twitter')
print twitter.extra_data['access_token']
终端给我这个错误
""TypeError: string indices must be integers""
如果我执行 "print vars(twitter)",这就是我得到的数据
{'user_id': 123, 'uid': u'2413671427750', '_user_cache': <User: quintana>, '_state': <django.db.models.base.ModelState object at 0x7fa3d86fc2d0>, 'provider': u'twitter', 'extra_data': u'{"access_token": {"oauth_token_secret": "Afkasdasdas21zxbxcbn", "oauth_token": "2468cxcpqsldkenI56", "x_auth_expires": "0", "user_id": "455793463", "screen_name": "puertoRico"}, "id": 455793463}', 'id': 123}
正如我从 print vars(twitter)
的输出中看到的那样 - extra_data 存储序列化字典(字符串)'extra_data': u'{...}'
。
所以需要先反序列化
import json
twitter = request.user.social_auth.get(provider ='twitter')
extra_data = json.loads(twitter.extra_data) # will give you a python dictionary
print extra_data['access_token']