2017-11-17 6 views
0

GDrive OAuth ermöglicht das Übergeben eines Statusparameters von der Anforderung an den Antwort-Callback. Wenn ich eine Zeichenfolge sende, die ein einzelnes Token enthält, funktioniert es wie erwartet, aber wenn ich ein json sende, dann kann ich den Wert aus dem state-Parameter in der Callback-Funktion nicht zurücklesen.Google Drive OAuth2: "state" mit mehreren Parametern

Ich habe versucht mit base64.encodetring(), base64.urlsafe_b64encode() und die Decodierung Versionen dieser Funktionen im Rückruf, aber dann bekomme ich eine "falsche Padding" Fehler beim Decodieren.

Um dies zu korrigieren, habe ich versucht, das folgende Snippet ich auf Stackoverflow gefunden:

`stateStr += "=" * ((4 - len(stateStr) % 4) % 4)` 
`stateList = base64.urlsafe_b64decode(stateStr)` 

Aber ich immer noch die „Falsches Padding“ Fehler.

Jede Hilfe wird geschätzt werden,

Dank

EDIT Die Abhilfe für dieses Problem war für mich eine der Saiten zu trennen, indem mit '|' verkohlen. Auf diese Weise übergebe ich immer noch eine einzige Saite, die ohne Padding-Fehler funktioniert. EDIT

Antwort

0

von diesen SO post Basierend, gibt es verschiedene Möglichkeiten, in denen base64-Daten beschädigt werden könnten. Es wurde here angegeben, dass das Füllzeichen nicht benötigt wird, da die Anzahl der fehlenden Bytes aus der Anzahl der Base64-Ziffern berechnet werden kann.

Wenn es einen Füllfehler gibt, bedeutet dies wahrscheinlich, dass Ihre Zeichenfolge beschädigt ist. base64-codierte Strings sollten ein Vielfaches von vier haben. Sie können versuchen, das Auffüllzeichen (=) selbst hinzuzufügen, um die Zeichenkette zu einem Vielfachen von vier zu machen, aber es sollte das schon haben, wenn etwas nicht falsch ist.