在我的應用程序中,我可以通過providerId和providerUserId來識別用戶。但在最初,我只以下信息:如何通過providerId,accessToken和secret獲取providerUserId? (春季社交)
- providerId,
- 的accessToken,
- 祕密。
因此,我需要通過此信息獲取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()'爲此目的。但也許你可以給我一個建議:可能是我需要做我以其他方式使用這個框架做的事情? –