слишком короткий FB accessToken в Kinvey _socialIdentity с использованием kinvey-nativescript-sdk

У меня есть работающий процесс входа в Facebook с использованием Kinvey MIC в моем приложении NativeScript. Я могу войти в систему Kinvey, и запись _socialIdentity успешно создана. В связи с тем, что мне нужно также знать адрес электронной почты пользователя, зарегистрированного в учетной записи FB (который не отправляется в базовом ответе пользователя от FB), мне нужно запросить для этого FB Graph API.

https://graph.facebook.com/v3.2/me?fields=id,name,email&access_token= + accessToken

Если я использую accessToken, хранящийся в _socialIdentity Kinvey, FB возвращает: «ошибка»: { JS: «message»: «Неверный токен доступа OAuth.», JS: «type»: «OAuthException», JS: «code»: 190, JS: }

Если я использую accessToken, сгенерированный инструментом разработчиков FB, и жестко вписываю его в свой код NS, все работает хорошо — я получаю всю запрошенную информацию.

Разница, которую я обнаружил, заключается в длине accessToken: accessToken, хранящийся в Kinvey, имеет 40 символов, а созданный инструментами FB — 247 символов.

Может ли кто-нибудь объяснить, почему accessToken FB в _socialIdentity Kinvey является коротким/невозможным для дальнейшего использования или как получить действительный accessToken с помощью kinvey-nativescript-sdk? Также, если кому-то удалось получить контактный адрес электронной почты пользователя из учетной записи FB, используя kinvey-nativescript-sdk.

Спасибо


person Juraj    schedule 15.01.2019    source источник
comment
Можете ли вы показать нам код, как именно вы получаете токен FB?   -  person Manoj    schedule 15.01.2019
comment
accessToken = response.data._socialIdentity.kinveyAuth.idp_access_token; http.getJSON( graph.facebook.com/v3.2 / + accessToken ) .then(res =› { console.log(res); }) .catch(function(error) { console.log(error); });   -  person Juraj    schedule 22.01.2019
comment
Теперь это работает нормально, так как Билгер рекомендовал добавить дополнительные разрешенные атрибуты в настройку Kinvey MIC.   -  person Juraj    schedule 22.01.2019


Ответы (1)


Можете ли вы попробовать добавить client_token в раздел Разрешенные атрибуты конфигурации службы Mobile Identity Connect?

Это создаст новый атрибут в объекте kinveyAuth (который содержится в атрибуте _socialIdentity сущности пользователя), который будет содержать токен доступа, о котором вы говорите.

Можете ли вы попробовать это и дайте мне знать, если это сработает?

Изменить: вы также можете попробовать добавить idp_access_token в раздел Разрешенные атрибуты. Это напрямую создаст атрибут объекта kinveyAuth, который будет содержать только необходимый токен.

person Bilger Yahov    schedule 15.01.2019
comment
Билгер, это работает отлично! Добавление client_token, как было предложено, добавит атрибуты \access_token\, ,\token_type\:\bearer\,\expires_in\ в часть client_token _socialIdentity в коллекции пользователей Kinvey. idp_access_token работает именно так, как описано. Спасибо! - person Juraj; 22.01.2019