Невозможно получить общие подключения LinkedIn
В настоящее время я работаю над приложением Grails (использующим Groovy, который похож на Java), где пользователь может просматривать профиль других пользователей. На странице профиля пользователя мне нужно отобразить соединения LinkedIn, используемые совместно этим пользователем и профилями зрителя LinkedIn. Для интеграции с LinkedIn я в настоящее время использую linkedin-j.jar
Используя все, что я мог догадаться по документации API и поиску в Google, я написал следующий код, который был неудачным для получения общих подключений.
Любая помощь будет оценена.
LinkedInAccessToken targetUserLiAccessToken = new LinkedInAccessToken(targetUserOauthToken, targetUserOauthSecret)
LinkedInApiClient targetUserLiApiClient= linkedInApiClientFactory.createLinkedInApiClient(targetUserLiAccessToken)
Person targetUserLiProrfile=targetUserLiApiClient.getProfileForCurrentUser([ProfileField.ID] as Set)
LinkedInAccessToken currentUserLiAccessToken = new LinkedInAccessToken(currUserOauthToken, currUserOauthSecret)
LinkedInApiClient currentUserLiApiClient= linkedInApiClientFactory.createLinkedInApiClient(currentUserLiAccessToken)
Person resultProfile = currentUserLiApiClient.getProfileById(targetUserProfile.id, [ProfileField.ID, ProfileField.RELATION_TO_VIEWER] as Set)
List<Person> commonConnections= resultProfile.relationToViewer.relatedConnections.personList
(Здесь текущий пользователь - зритель, а целевой пользователь - тот, чей профиль просматривается.)
После запуска этого кода я получаю следующие результаты:
resultProfile.relationToViewer.relatedConnections: NULL
resultProfile.relationToViewer.distance: 2
Но это не так, как ожидалось, профили LinkedIn обоих пользователей имеют одно общее соединение
1 ответ
Я смог решить проблему.
Точки, где я отсутствовал:
Приложение LinkedIn, API-ключ и секрет которого я использовал для получения данных, было настроено на запрос только разрешения BASIC_PROFILE (это произошло потому, что LinkedIN недавно внес некоторые изменения в свои разрешения API). Для доступа к информации о соединениях также потребовались разрешения NETWORK.
В коде я должен был использовать
ProfileField.RELATION_TO_VIEWER_RELATED_CONNECTIONS
вместоProfileField.RELATION_TO_VIEWER
Ниже приведен последний кусок кода, который работал для меня:
LinkedInAccessToken targetUserLiAccessToken = new LinkedInAccessToken(targetUserOauthToken, targetUserOauthSecret)
LinkedInApiClient targetUserLiApiClient= linkedInApiClientFactory.createLinkedInApiClient(targetUserLiAccessToken)
Person targetUserLiProrfile=targetUserLiApiClient.getProfileForCurrentUser([ProfileField.ID] as Set)
LinkedInAccessToken currentUserLiAccessToken = new LinkedInAccessToken(currUserOauthToken, currUserOauthSecret)
LinkedInApiClient currentUserLiApiClient= linkedInApiClientFactory.createLinkedInApiClient(currentUserLiAccessToken)
Person resultProfile = currentUserLiApiClient.getProfileById(targetUserProfile.id, [ProfileField.ID, ProfileField.RELATION_TO_VIEWER_RELATED_CONNECTIONS] as Set)
List<Person> commonConnections= resultProfile.relationToViewer.relatedConnections.personList