我正试图通过LinkedIn在我的网站上获得名字,姓氏和电子邮件。这就是我所做的:
在我的LinkedIn应用程序中,我将默认范围(OAuth用户协议)设置为:
我已将我的域名正确添加到 Javascript API域。我没有添加OAuth 2.0重定向网址的链接。但我不知道这是否是强制性的(以及插入的路径)?
我还复制了我的 API密钥(消费者密钥)。
现在我的HTML中有:
<script type="text/javascript" src="http://platform.linkedin.com/in.js">
lang: en_US
api_key: myapikey
scope: r_basicprofile r_emailaddress
</script>
<input class="apply-with-linkedin" type="button" value="Apply with LinkedIn" id="btn-linkedin-apply">
<script type="text/javascript">
jQuery('#btn-linkedin-apply').click(function (e) {
e.preventDefault();
e.stopPropagation();
IN.User.authorize(function ()
{
IN.API.Profile('me').fields([
'firstName',
'lastName',
'emailAddress'
]).result(function (profiles)
{
var me = profiles.values[0];
if (me.hasOwnProperty('firstName')) {
jQuery('#apply-form #input-firstname').val(me.firstName);
}
if (me.hasOwnProperty('lastName')) {
jQuery('#apply-form #input-lastname').val(me.lastName);
}
if (me.hasOwnProperty('emailAddress')) {
jQuery('#apply-form #input-email').val(me.emailAddress);
}
});
});
});
</script>
但是当我点击按钮时,我总是收到javascript错误Cannot read property 'authorize' of undefined
。 IN.User
未定义。
这可能有什么问题? ...
更新
我指定API密钥的javascript代码,...我已经从"Getting Started with the JavaScript SDK" from LinkedIn复制了。
<script type="text/javascript" src="//platform.linkedin.com/in.js">
api_key: [API_KEY]
onLoad: [ONLOAD]
authorize: [AUTHORIZE]
lang: [LANG_LOCALE]
</script>
答案 0 :(得分:2)
您可能只是遇到了图书馆的异步性问题。我已经为您稍微修改了Sign in with LinkedIn Javascript示例中的示例代码,但我认为您的问题将通过更多关注回调来解决,以便您知道a)库已加载,并且b )API调用已成功完成 - 在尝试访问任何结果数据之前:
<script type="text/javascript" src="//platform.linkedin.com/in.js">
api_key: YOUR_API_KEY_HERE
authorize: true
scope: r_basicprofile r_emailaddress
onLoad: onLinkedInLoad
</script>
<script type="text/javascript">
// Setup an event listener to make an API call once auth is complete
function onLinkedInLoad() {
IN.Event.on(IN, "auth", getProfileData);
}
// Handle the successful return from the API call
function onSuccess(data) {
// Pre-populate your form fields here once you know the call
// came back successfully
}
// Handle an error response from the API call
function onError(error) {
console.log(error);
}
// Use the API call wrapper to request the member's basic profile data
function getProfileData() {
IN.API.Raw("/people/~:(firstName,lastName,emailAddress)").result(onSuccess).error(onError);
}
</script>