Ich leide unter verify_id_token() Fehler mit (Google) Firebase Admin-SDK in Auth-Modul.binascii.Error: Falsche Auffüllung bei der Verwendung von Firebase admin-sdk, wenn ich das Benutzer-Token verifizieren
Wenn ich den Benutzer nach Benutzer-Token von Frontend js, authentifiziert authentifizieren.verify_id_token (Token) -Methode verify "binascii.Error: Falsche Auffüllung" Fehler.
Traceback dieses Fehlers ist unten.
Traceback (most recent call last):
File "/home/ubuntu/.pyenv/versions/3.6.2/lib/python3.6/site-packages/flask/app.py", line 1997, in __call__
return self.wsgi_app(environ, start_response)
File "/home/ubuntu/.pyenv/versions/3.6.2/lib/python3.6/site-packages/flask/app.py", line 1985, in wsgi_app
response = self.handle_exception(e)
File "/home/ubuntu/.pyenv/versions/3.6.2/lib/python3.6/site-packages/flask/app.py", line 1540, in handle_exception
reraise(exc_type, exc_value, tb)
File "/home/ubuntu/.pyenv/versions/3.6.2/lib/python3.6/site-packages/flask/_compat.py", line 33, in reraise
raise value
File "/home/ubuntu/.pyenv/versions/3.6.2/lib/python3.6/site-packages/flask/app.py", line 1982, in wsgi_app
response = self.full_dispatch_request()
File "/home/ubuntu/.pyenv/versions/3.6.2/lib/python3.6/site-packages/flask/app.py", line 1614, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/ubuntu/.pyenv/versions/3.6.2/lib/python3.6/site-packages/flask/app.py", line 1517, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/ubuntu/.pyenv/versions/3.6.2/lib/python3.6/site-packages/flask/_compat.py", line 33, in reraise
raise value
File "/home/ubuntu/.pyenv/versions/3.6.2/lib/python3.6/site-packages/flask/app.py", line 1612, in full_dispatch_request
rv = self.dispatch_request()
File "/home/ubuntu/.pyenv/versions/3.6.2/lib/python3.6/site-packages/flask/app.py", line 1598, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/home/ubuntu/workdir/server/firebase.py", line 185, in postme
decoded_token = auth.verify_id_token(posted)
File "/home/ubuntu/.pyenv/versions/3.6.2/lib/python3.6/site-packages/firebase_admin/auth.py", line 98, in verify_id_token
return token_generator.verify_id_token(id_token)
File "/home/ubuntu/.pyenv/versions/3.6.2/lib/python3.6/site-packages/firebase_admin/auth.py", line 592, in verify_id_token
header = jwt.decode_header(id_token)
File "/home/ubuntu/.pyenv/versions/3.6.2/lib/python3.6/site-packages/google/auth/jwt.py", line 151, in decode_header
header, _, _, _ = _unverified_decode(token)
File "/home/ubuntu/.pyenv/versions/3.6.2/lib/python3.6/site-packages/google/auth/jwt.py", line 129, in _unverified_decode
signature = _helpers.padded_urlsafe_b64decode(signature)
File "/home/ubuntu/.pyenv/versions/3.6.2/lib/python3.6/site-packages/google/auth/_helpers.py", line 217, in padded_urlsafe_b64decode
return base64.urlsafe_b64decode(padded)
File "/home/ubuntu/.pyenv/versions/3.6.2/lib/python3.6/base64.py", line 133, in urlsafe_b64decode
return b64decode(s)
File "/home/ubuntu/.pyenv/versions/3.6.2/lib/python3.6/base64.py", line 87, in b64decode
return binascii.a2b_base64(s)
binascii.Error: Incorrect padding
Ich veröffentlichte den Client-Token per Javascript vom Client wie unten.
var token = user.getIdToken()
var bapi = axios.create({
baseURL: 'http://mypage.com',
timeout: 10000,
headers: {
'X-Requested-With': 'XMLHttpRequest'
}
})
bapi.post('/postme', token)
.then(response => {
console.log(response)
}).catch(err => {
console.log(err)
})
Und dekodieren von Python (Kolben) bei angeforderten Server
@app.route('/postme',methods=['POST'])
def postme():
posted = request.data
decoded_token = auth.verify_id_token(posted) # error!!
# uid = decoded_token['uid']
return uid
Wer weiß, was zu tun ??
Vielen Dank für Ihre Antwort. –
Ich wusste nicht, dass user.getIdToken() Versprechen zurückgibt, und ich versuche, was Sie gesagt haben. Aber als ich '' 'bapi.post ('/ postme', Token) versucht;' '' in js Seite, Python-Server erhielt leere Zeichenfolge (b ''). –
'' 'bapi.post ('/ postme', {token});' '' sieht gut aus, weil python server '' 'b '{" token ":" ... (codierte string) ... " } ''' 'was durch jwt.io bestätigt werden kann. Aber der gleiche Fehler ist aufgetreten. –