Grails: JSON.parse () Ошибка в Linux - Работает в Windows - поставлена ​​в тупик - PullRequest
1 голос
/ 22 декабря 2011

Я работаю над кодом OAuth 2.0 на Facebook, чтобы исправить текущий плагин. Я закончил на 99 процентов, но когда я развернул свой код в Linux, он не работает (разработано в Windows).

Я получаю ошибку:
Exception Message: Expected a ',' or '}' at character 277 of {"algorithm":"HMAC-SHA256","code":"AQDZPCNUY2VHnN1R340mArRUggpP1393V9E0VeL-fJbp0VdRBOzR5S5sHQB5ysdhfX8BrPP0u43EVi5OBx5MnrbxROJsuwMrqHmEDRa2pFm-GQ-2_R1blo_uBgOoKFG_Gm0TvtiKhzR1LwV8KNJlAgfCikuzx-zCxDmUz4t6b6xWbvrLPBMYZaLzdy5te3lYGqk","issued_at":1324533514,"user_id":"123144996"} Caused by: Expected a ',' or '}' at character 277 of {"algorithm":"HMAC-SHA256","code":"AQDZPCNUY2VHnN1R340mArRUggpP1393V9E0VeL-fJbp0VdRBOzR5S5sHQB5ysdhfX8BrPP0u43EVi5OBx5MnrbxROJsuwMrqHmEDRa2pFm-GQ-2_R1blo_uBgOoKFG_Gm0TvtiKhzR1LwV8KNJlAgfCikuzx-zCxDmUz4t6b6xWbvrLPBMYZaLzdy5te3lYGqk","issued_at":1324533514,"user_id":"123144996"}

Прямо перед этой ошибкой. Я получаю то же сообщение без окончания} В качестве хака я фактически использовал код, подобный следующему:

if (!jsonData.trim().endsWith("}")) {
    jsonData = jsonData + "}"
}

Я не уверен, как этот код может работать в Windows иначе, чем в Linux. Ищу идеи. Не уверен, что это кодировка? новый URL (). текст? Код decodeBase64? Мысли?

    String[] signedRequestParts = signedRequest.split('\\.')
    // signedRequest gets deconstructed into a JSON packet
    String jsonData = new String(Base64.decodeBase64(signedRequestParts[1].getBytes()), 'UTF-8')
    // attempt at temporary hack fix    
    if (!jsonData.trim().endsWith("}")) {
        jsonData = jsonData + "}"
    }

    def json = JSON.parse(jsonData) // I get that error on this line
    def fbToken
    if (json.code) {
        def u = 'https://graph.facebook.com/oauth/access_token' +
                '?client_id=' + applicationId + '&client_secret=' + secret +
                '&redirect_uri=' + '&code=' + json.code
        def content = new URL(u).text
        fbToken = content.split("&")[0].split("=")[1];
    }

1 Ответ

0 голосов
/ 22 декабря 2011

java.lang.String.getBytes () также принимает кодировку. Вы пробовали getBytes ("UTF-8") ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...