urlsafe_b64encode は、base64 エンコーディングのいくつかの文字を置き換えているようです。ドキュメントによると:
URL およびファイルシステムセーフなアルファベットを使用して bytes-like object s をエンコードします。これは、標準の Base64 アルファベットの
+の代わりに-を、/の代わりに_を使用します。エンコードされたbytesを返します。結果にはまだ=が含まれる場合があります。
これは、結果が標準の base64 ではなく、Discourse のデコードと互換性がないことを意味します。
代わりに通常の b64encode 関数を使用することをお勧めします。必要に応じて、HTTP ライブラリが URL エスケープを処理してくれるはずです。