LinkedIn REST API AUTH et JSAPI Call, Rails / OmniAuth
-
13-11-2019 - |
Question
J'ai perdu mon sang-froid il y a quelques jours à cause de ce simple problème. Pouvez-vous m'aider à ce sujet?
Je suppose que, car il est écrit dans la documentation de l'API LinkedIn JS ici, pour pouvoir logion avec repos et lancer des appels avec JSAPI:https://developer.linkedin.com/documents/inauth-inevent-andinui
Jetons d'autorisation
Alors que la méthode la plus simple pour authentifier un utilisateur pour le JSAPI est d'utiliser l'un des boutons de connexion, certains sites ont implémenté le flux OAuth 1.0A utilisé par l'API REST. Quel que soit le type d'authentification que vous utilisez pour l'utilisateur, le JSAPI reconnaîtra que le membre s'est déjà connecté, tant que la clé et le nom d'hôte sont les mêmes. Cela se produit automatiquement, ne nécessitant aucun code supplémentaire par le développeur.
Mais cela ne fonctionne pas, j'ai cette erreur de console étrange:
Cannot call method 'Profile' of undefined
Quand j'appelle ça juste après Rest Auth:
IN.API.Profile("me").fields(["id", "..."]).result(linkedin_connect_save);
Des idées?
La solution
Cette erreur de console n'a rien à voir avec l'authentification - je suppose que vous chargez un autre framework JavaScript qui interfère avec le framework LinkedIn et l'objet In ne fait pas de charge correctement.
La page suivante fonctionne avec une clé que j'ai précédemment authentifiée à l'aide de repos dans le même navigateur ici: http://developer.linkedinlabs.com/tutorials/testing.html
<html>
<head>
<title>Connections App Example</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body class="yui3-skin-sam yui-skin-sam">
<script type="text/javascript" src="http://platform.linkedin.com/in.js">
api_key: MY_API_KEY
onLoad: loadData
authorize: true
</script>
<script type="text/javascript">
function loadData() {
IN.API.PeopleSearch()
.fields("firstName", "lastName", "distance", "publicProfileUrl","pictureUrl")
.params({"keywords": "princess", "count": 10, "sort": "distance"})
.result(function(result) {
alert(JSON.stringify(result));
});
}
</script>
</body>
</html>
Autres conseils
Votre code peut appeler avant JS Charge .. Inclure JS avant votre code.