如何使用Firebase Auth将令牌发送回android
我正在开发一个Android应用程序,它使用Firebase和我自己运行Django的服务器。我想做的是,首先使用android应用程序向django服务器验证用户身份,然后该服务器生成firebase文档中指定的自定义令牌。然后我想将生成的自定义令牌发送回android 我的问题是如何将自定义令牌发送回android?我尝试作为JSON对象发送。但是它说JWT不是JSON可序列化的 我将来自android应用程序的用户名和密码作为json对象传递,并通过django服务器的身份验证 这是我的最小如何使用Firebase Auth将令牌发送回android,android,python,json,django,firebase-authentication,Android,Python,Json,Django,Firebase Authentication,我正在开发一个Android应用程序,它使用Firebase和我自己运行Django的服务器。我想做的是,首先使用android应用程序向django服务器验证用户身份,然后该服务器生成firebase文档中指定的自定义令牌。然后我想将生成的自定义令牌发送回android 我的问题是如何将自定义令牌发送回android?我尝试作为JSON对象发送。但是它说JWT不是JSON可序列化的 我将来自android应用程序的用户名和密码作为json对象传递,并通过django服务器的身份验证 这是我的最
Django
代码:
import firebase_admin
from firebase_admin import credentials
from firebase_admin import auth
cred = credentials.Certificate("firebase-admin.json")
default_app = firebase_admin.initialize_app(cred)
def validateuser(request):
json_data=json.loads(request.body.decode('utf-8'))
try:
// I verify the username and password and extract the uid
uid = 'some-uid'
custom_token = auth.create_custom_token(uid)
result={'TAG_SUCCESS': 1, 'CUSTOM_TOKEN': custom_token }
except:
result={'TAG_SUCCESS': 0, 'CUSTOM_TOKEN': '0'}
return HttpResponse(json.dumps(result), content_type='application/json')
但是它说定制令牌是不可JSON序列化的。这不是这样做的方式吗?如何将自定义令牌发送回android应用程序
这就是错误:
uid:78b30d23-6238-4634-b2e4-73cc1f0f7486
自定义令牌:b'Eyjrawqiaizmflnza2mzziy2uwztk2y2y2y2y5y2rLnzy5nzy2nzm2mzyiiiiiiiiiiiiizlwijgjkvcj9.eyjPc3mioIizmyzyy2y2y2y2y2y2y2y2y2y2y2y2nziiiiiiiiiiiiiizizizizizizizyyzyzyzyzyzyzyzyzyzyzyzyjjjjjjjjjjjjjjjjjjjjjjjjjjc2c2c2c2c2c2uzc2c2uzc2uzc2uzc2uzc2uzc2uzc2u2.在一份研究报告中,一份研究报告在一份研究报告中给出了一份研究报告,一份研究报告在一份研究报告中给出了一份研究,一份研究在一份研究论文中给出了一份研究,一份研究论文在一份研究论文中给出了一份关于一份研究论文在一份研究论文中提出了一份关于一份研究论文在一份研究论文中获得了一份新的一份研究。一份研究在一份研究论文中给出了一份研究的一份研究,一份研究论文在一份关于一份关于一份关于一份关于一份关于一份关于一份研究,一份研究,一份关于一份关于一份关于一份研究的论文的研究的研究的研究论文的论文的论文的论文,一份研究,一份研究,一份关于一份关于一份关于一份关于一份关于一份关于一份关于一份关于一份关于一份关于一份关于一份关于一份关于一份关于一份研究的研究的ZD5QM79TWMFBRQZRB1y7g1-ZCJL69X8KFSTHWHOTMO0TYJ5L3ZF82CXBW2SGEFMWKWL0D1YQJCUQVYUSAP3-SG8KRRQCCG4CJNOXKEWXWBUQO7DOBOQLT5TFRAPWK8TD6UPJD7D6JQMO-HPKOis0vRoXMBzflZKj36-hIOFkygZNbDWLTsQzbb3HZg8dBabA5GTy——IQI038TRMIW0IR0NG='
内部服务器错误:/api/user/validateuser/Traceback(最新版本)
调用最后一个文件
“/usr/local/lib/python3.5/dist packages/django/core/handlers/exception.py”,
第41行,在内部
response=get_response(请求)文件“/usr/local/lib/python3.5/dist-packages/django/core/handlers/base.py”,
第249行,在_legacy_get_响应中
response=self.\u get\u response(请求)文件“/usr/local/lib/python3.5/dist packages/django/core/handlers/base.py”,
第187行,在“获取”响应中
response=self.process\u exception\u by\u中间件(e,请求)文件“/usr/local/lib/python3.5/dist-packages/django/core/handlers/base.py”,
第185行,在“获取”响应中
response=wrapped_callback(请求,*callback_args,**callback_kwargs)文件“/usr/local/lib/python3.5/dist packages/django/views/decorators/csrf.py”,
第58行,在包裹视图中
返回view_func(*args,**kwargs)文件“/home/ubuntu/www/Tracker/user/api/views.py”,第251行,在
验证者
返回HttpResponse(json.dumps(result),content_type='application/json')文件
“/usr/lib/python3.5/json/init.py”,第230行,转储中
在encode中返回_default_encoder.encode(obj)文件“/usr/lib/python3.5/json/encoder.py”,第198行
chunks=self.iterencode(o,_one_shot=True)文件“/usr/lib/python3.5/json/encoder.py”,第256行,在iterencode中
返回_iterencode(o,0)文件
默认情况下,“/usr/lib/python3.5/json/encoder.py”,第179行
raise TypeError(repr(o) + " is not JSON serializable")
我认为您使用的是python3版本。我发现了问题所在 auth.create_custom_token(uid)方法返回字节文本,字节文本不可JSON序列化。这就是为什么会出现错误。您可以在jwt令牌前面看到b' 因此,您需要使用下面的代码将字节文字转换为字符串
custom_token = (auth.create_custom_token(uid)).decode()
我认为您使用的是python3版本。我发现了问题所在 auth.create_custom_token(uid)方法返回字节文本,字节文本不可JSON序列化。这就是为什么会出现错误。您可以在jwt令牌前面看到b' 因此,您需要使用下面的代码将字节文字转换为字符串
custom_token = (auth.create_custom_token(uid)).decode()
AttributeError:'str'对象没有属性'decode'AttributeError:'str'对象没有属性'decode'