首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法验证Firebase令牌

无法验证Firebase令牌
EN

Stack Overflow用户
提问于 2018-11-06 05:49:02
回答 2查看 363关注 0票数 1

我正在用flutter制作一个使用谷歌登录的应用程序。我也有一个Django后端链接到应用程序,我想验证用户在Django后端。我在互联网上找到了许多解决方案,但没有一个是有效的。也许我把事情搞砸了。

我尝试使用python-jose进行验证,代码如下:

代码语言:javascript
复制
from jose import jwt
import urllib.request, json
token = '<token recieved using await user.getIdToken in flutter>'
target_audience = "<tried projectid/appid>"
certificate_url = 'https://www.googleapis.com/robot/v1/metadata/x509/securetoken@system.gserviceaccount.com'
response = urllib.request.urlopen(certificate_url)
certs = response.read()
certs = json.loads(certs)
print(certs)
user = jwt.decode(token, certs, algorithms='RS256', 
audience=target_audience)

我也尝试过oauth2client,代码在这里:

代码语言:javascript
复制
from oauth2client import crypt
import urllib.request, json
certificate_url = 'https://www.googleapis.com/robot/v1/metadata/x509/securetoken@system.gserviceaccount.com'
target_audience = 'tried projectid/appid'
response = urllib.request.urlopen(certificate_url)
certs = response.read()
certs = json.loads(certs)
print(certs)
crypt.MAX_TOKEN_LIFETIME_SECS = 30 * 86400
idtoken = 'token received from await user.getIdToken()'
crypt.verify_signed_jwt_with_certs(idtoken, certs, target_audience)

我还尝试了python的firebase_admin:

代码语言:javascript
复制
import firebase_admin
from firebase_admin import credentials
from firebase_admin import auth
cred = credentials.Certificate('<firebase service accounts private key>')
default_app = firebase_admin.initialize_app(cred)
token = 'token from flutter'
verifyied =auth.verify_id_token(id_token=token)

只是为了检查firebase_admin库本身是否正常工作,我将userid从应用程序传递到服务器,并尝试使用firebase_admin删除用户,我可以做到这一点。但由于某些原因,我无法验证令牌。

谢谢你的帮助。

EN

回答 2

Stack Overflow用户

发布于 2019-08-22 18:14:25

我也遇到过同样的问题。

案例:

最初:我在vscode控制台中打印auth令牌,并在终端中进行验证。

它给了我错误:令牌长度不能大于% 4。

我尝试从jwt.io验证令牌,它似乎是正确的。

问题的实际原因:

vscode的控制台输出(在我的例子中是windows 7和64位)。一行限制为1064个字符。

尽管令牌的实际长度被假定为1170个字符。

解决方案:

在vscode控制台中打印子字符串,并在python shell中将其加入以进行验证。

票数 2
EN

Stack Overflow用户

发布于 2018-11-06 20:23:42

回答我自己的问题。问题是我的服务器实际上并没有部署,所以我复制了用户登录时在vscode控制台中打印的令牌,并将其粘贴到python代码中,然后尝试验证令牌。事实证明它并不是这样工作的。

我托管了我的Django应用程序,并在post请求中传递了令牌,然后尝试验证令牌,它工作了。

如果您遇到问题,可以在这里参考解决方案:https://coders-blogs.blogspot.com/2018/11/authenticating-user-on-backend-of-your.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53162723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档