私はFBcookieを使用していて、それをjsonにデコードしようとしていますが、コードは次のようになります。
def value = cookie.value
String[] tokens = value.split('\\.')
String decodeToken = new String(Base64.decodeBase64(tokens[1].getBytes()),
'UTF-8')
def jsonValue = JSON.parse(decodeToken)
Cookieは、ログインプラグインを使用するときにFacebookが作成するCookieです。
さて、run-appを使ってこれを実行すると、問題はありません。ただし、run-warを使用して実行すると、JSONパーサーが文字列からJSONオブジェクトを作成しようとすると例外がスローされます。
原因:org.codehaus.groovy.grails.web.json.JSONException:{"algorithm": "HMAC-SHA256"、 "code": "AQCvjV .. ..の文字304に'、'、または'}'が必要です。 .... "user_id":... 50089 "\ 00 \ 00
さらにデバッグすると、デコード呼び出しから作成された文字列は、run-appのコンテキストで実行すると問題ないようです。しかし、run-warが実行されると、文字列の最後の文字は「}」ではなく、文字化けした文字になります。これにより、パーサーは例外をスローします。
これの原因は何でしょうか?これをさらにデバッグし始めるのに良いポイントは何でしょうか?
特定のエンコーディングを使用してgetBytes()を呼び出そうとしましたが、役に立ちませんでした。