Spring Social Facebook - обменяйте код авторизации на токен - PullRequest
0 голосов
/ 17 мая 2018

Я совсем новичок в sprig / spring-social.Я пытаюсь выполнить запрос к API Facebook из моего приложения весенней загрузки (v1.4), чтобы обменять код авторизации (который я получаю с моим внешним приложением) на accessToken.Вот как я это делаю

FacebookConnectionFactory facebookConnectionFactory = new FacebookConnectionFactory(fbAppId, fbAppSecret);
AccessGrant accessGrant = facebookConnectionFactory.getOAuthOperations()
            .exchangeForAccess(authCode, redirectUri, null);

В результате я получаю AccessGrant с accessToken равным null.Пытаясь отладить поток обмена кода с токеном, я вижу, что в FacebookOAuth2Template::postForAccessGrant() действительно получен правильный authToken, но по какой-то причине он преобразован в MultiValueMap<String, String>, то есть:

protected AccessGrant postForAccessGrant(String accessTokenUrl, MultiValueMap<String, String> parameters) {
    MultiValueMap<String, String> response = getRestTemplate().postForObject(accessTokenUrl, parameters, MultiValueMap.class);
    String expires = response.getFirst("expires");
    return new AccessGrant(response.getFirst("access_token"), null, null, expires != null ? Long.valueOf(expires) : null);
}

Myresponse MultiValueMap, таким образом, содержит одну запись с ключом, который является ответом facebook authToken.Очевидно, что все последующие response.getFirst() вызовы ничего не возвращают

Я почти уверен, что упускаю что-то здесь очевидное, но все же не могу понять, почему ответ authToken преобразуется в MutliValueMap так, как это происходит

1 Ответ

0 голосов
/ 17 мая 2018

Похоже, старая версия зависимости spring-social-facebook (1.1.0) была включена в проект и использовалась в общении.Обновление до версии 2.x решило проблему

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