В моем приложении я могу идентифицировать пользователя через providerId и providerUserId. Но сначала, я только следующую информацию:Как получить providerUserId через providerId, accessToken и секрет? (Spring Social)
- providerId,
- маркер доступа,
- секретная.
Таким образом, Мне нужно приобрести providerUserId.
Я пытаюсь использовать следующий код:
ConnectionData connectionData = newConnectionData(providerId, accessToken, secret);
ConnectionFactory<?> connectionFactory = connectionFactoryLocator.getConnectionFactory(providerId);
Connection<?> connection = connectionFactory.createConnection(connectionData);
if(connection.test()) {
connection.sync();
} else {
throw new AuthException();
}
return userEntityService.findOneByConnectionKey(connection.getKey());
Но проблема заключается в том, что ключ подключения не инициализирован: providerUserId равно нулю.
Как его приобрести в этом случае?
Я попытаюсь объяснить, почему я использую этот код. Мой код предназначен для защиты доступа к моему REST API. Я хочу, чтобы только зарегистрированные пользователи могли получить к нему доступ. Зарегистрированные пользователи имеют свойства «providerId» и «providerUserId». Эта комбинация может использоваться для идентификации пользователя. Когда пользователь пытается получить доступ к моему API, он отправляет «providerId», «accessToken» и, возможно, «секретный», который он приобрел во время «танца» OAuth на стороне клиента. –
Как только информация была получена сервером, сервер проверяет, что соединение действительно. И если это действительно так, сервер должен проверить наличие пользователя в базе данных. Вот почему мне нужно приобрести «providerUserId», используя имеющуюся информацию. –
В настоящее время я изучил исходники кода и нашел решение. Spring Social использует: 'Long.toString (twitter.userOperations(). GetProfileId())' и 'google.plusOperations(). GetGoogleProfile(). GetId()' для этой цели. Но может быть, вы можете дать мне совет: может быть, мне нужно делать то, что я делаю другим способом, используя эту структуру? –