hello.js oauth to linkedin - ошибка прокси-сервера heroku или неверное определение приложения
Доброе утро
Я пытаюсь создать кнопку "Войти через LinkedIn" с помощью hello.js. Я использовал этот пример: hello.js - пример демо-версии. Все в порядке, и я могу войти в LinkedIn.
Теперь я пытаюсь изменить значение LINKEDIN_CLIENT_ID в строке 25. Эта константа определена в client_ids.js, и ее значение равно "bixrjszkfk0j". Это API-ключ приложения hello.js LinkedIn. Мне нужно изменить его на API-ключ моего приложения в LinkedIn.
Когда я меняю ключ, я не могу войти. Я вижу мое приложение в подсказке LinkedIn: "Test2 хотел бы получить доступ к некоторым сведениям о вашей LinkedIn", но швы, что LinkedIn препятствуют успешному входу в это приложение.
Поскольку я только что изменил ключ API, проблема должна заключаться в определении моего приложения в LinkedIn, а не в коде.
Это изображение из определения моего приложения на LinkedIn: http://i.imgur.com/oUHY6vk.png
Больше информации:
С помощью API-ключа приложения hello.js я вижу, что после входа в систему это значение устанавливается в Локальное хранилище браузера (Chrome 28 в Ubuntu 13.04):
{
"sync_service":"linkedin",
"linkedin":{
"expires_in":5104774,
"access_token":"AQV_zG8n88HW ... (a long id)",
"state":"",
"client_id":"bixrjszkfk0j",
"network":"linkedin",
"display":"popup",
"oauth_proxy":"https://auth-server.herokuapp.com/proxy",
"scope":["basic"],
"oauth":{
"version":2,
"auth":"https://www.linkedin.com/uas/oauth2/authorization",
"grant":"https://www.linkedin.com/uas/oauth2/accessToken"
},
"expires":1392801856.753
}
}
Для моего ключа API я получил этот результат в локальном хранилище:
{
"linkedin":{
"error":{
"code":"required_credentials",
"message":"Could not find the credentials for signing this request, ensure that the correct client_id is passed"
},
"error_message":"Could not find the credentials for signing this request, ensure that the correct client_id is passed",
"state":"",
"client_id":"77j96nqcybx2hg",
"network":"linkedin",
"display":"popup",
"oauth_proxy":"https://auth-server.herokuapp.com/proxy",
"scope":["basic"],
"oauth":{
"version":2,
"auth":"https://www.linkedin.com/uas/oauth2/authorization",
"grant":"https://www.linkedin.com/uas/oauth2/accessToken"
}
}
}
Также я проверил свой Apache access.log. В обоих случаях у меня есть GET-запросы, подобные этим:
для приложения hello.js:
http://myhost.abc/dl/aa/b.html?code=AQT7xj4N22o7hGQhnB2kuBD7pet7CM8YF9IYEckbcTMbxVRxKykxBZdZAUmtuOz9UjHYnqE7t8am4A9aMjLCeu2FBZjL3yEp_SG_ks3qal8TFOoW5Hs&state={"client_id":"bixrjszkfk0j","network":"linkedin","display":"popup","callback":"_hellojs_44aevwkw","state":"","oauth_proxy":"https://auth-server.herokuapp.com/proxy","scope":["basic"],"oauth":{"version":2,"auth":"https://www.linkedin.com/uas/oauth2/authorization","grant":"https://www.linkedin.com/uas/oauth2/accessToken"}}
для моего приложения:
http://myhost.abc/dl/aa/b.html?code=AQROQFhP2BawiylIN1Oz3qNVqodrABXExHOtX_gd_WXhqK7rAoWpR5cbNZBdWpkijh6iKfXiP3lwTodrpADm270H9Uuu5jSk6WOCOV-dB-3YkIyf7i0&state={"client_id":"77j96nqcybx2hg","network":"linkedin","display":"popup","callback":"_hellojs_3l93c9ah","state":"","oauth_proxy":"https://auth-server.herokuapp.com/proxy","scope":["basic"],"oauth":{"version":2,"auth":"https://www.linkedin.com/uas/oauth2/authorization","grant":"https://www.linkedin.com/uas/oauth2/accessToken"}}
Также в списке авторизованных внешних приложений в моей учетной записи LinkedIn я могу видеть как "Test2", так и "HelloJS OAuth2". Итак, я пришел к выводу, что мое приложение (Test2) успешно вошло в систему. Есть ли проблема в прокси-приложении hello.js heroku? Или я должен что-то изменить в определении моего приложения?
Спасибо
1 ответ
Зарегистрируйте ключ и секрет приложения с помощью https://auth-server.herokuapp.com/ к сожалению, потокам OAuth1 на стороне клиента по-прежнему нужен прокси-сервер на стороне для аутентификации и авторизации, поскольку они не могут хранить секрет в безопасности.