我正在使用LinkedIn Javascript API将用户登录到我的应用程序,但是即使我要求该特定字段的权限,API也不会返回电子邮件地址。我包括API脚本如下:
<script type="text/javascript" src="//platform.linkedin.com/in.js">
api_key: API_KEY
scope: r_fullprofile r_emailaddress
</script>
然后我在标记中包含登录按钮:
<script type="in/Login" data-onAuth="onLinkedInAuth">
最后我有一个函数来添加API响应的回调:
function onLinkedInAuth() {
var fields = ['first-name', 'last-name', 'email-address'];
IN.API.Profile("me").fields(fields).result(function(data) {
console.log(data);
}).error(function(data) {
console.log(data);
});
};
我只获取名字和姓氏,但API不会返回电子邮件字段。
参考:https://developer.linkedin.com/documents/profile-fields#email
答案 0 :(得分:14)
1-确保您在应用http://developer.linkedin.com/documents/authentication#granting中获得了电子邮件权限(r_emailaddress)
2-然后你可以使用这个
<script type="text/javascript" src="http://platform.linkedin.com/in.js">
api_key: key
**onLoad: onLinkedInLoad**
authorize: true
</script>
<script>
function onLinkedInLoad() {
IN.Event.on(IN, "auth", onLinkedInAuth);
}
// 2. Runs when the viewer has authenticated
function onLinkedInAuth() {
IN.API.Profile("me").fields("first-name", "last-name", "email-address").result(function (data) {
console.log(data);
}).error(function (data) {
console.log(data);
});
}
</script>
希望这会对你有所帮助:) 谢谢
答案 1 :(得分:2)
你好@Ulises Figueroa, 可能是我迟到了但这就是我完成这件事的方式:
从头部的页面顶部的初始脚本标签开始:
<script>
Client Id Number here:
onLoad: onLinkedInLoad
authorize: true
</script>
然后,在您的JS文件中,(我已经放置了一个外部JS文件来处理此API注册/ Auth),请放置以下详细信息:
function onLinkedInLoad() {
IN.Event.on(IN, "auth", getProfileData);
}
function onSuccess(data) {
console.log(data);
}
function onError(error) {
console.log(error);
}
function getProfileData(){
IN.API.Profile("me").fields(["firstName","lastName", "email-address", "positions"]).result(function(data) {
var profileData = data.values[0];
var profileFName = profileData.firstName;
var profileLName = profileData.lastName;
if(data.values[0].positions._total == "0" || data.values[0].positions._total == 0 || data.values[0].positions._total == undefined) {
console.log("Error on position details");
var profileCName = "Details Are Undefined";
}
else {
var profileCName = profileData.positions.values["0"].company.name;
}
var profileEName = profileData.emailAddress;
//console.log all the variables which have the data that
//has been captured through the sign up auth process and
//you should get them...
});
}
然后最后但并非最不重要,在HTML文档中添加以下内容,可以帮助您启动linkedin auth注册表单的窗口弹出窗口:
<script type="in/Login"></script>
以上设置对我有用。当然这会帮助你。
干杯,祝你有个愉快的一天。
答案 2 :(得分:1)
实施看起来不错。我相信这是个人资料隐私设置的结果。每个链接的文档:
并非所有字段都适用于所有配置文件。可用字段取决于您代表的成员和成员之间的关系,成员选择提供的信息以及他们的隐私设置。 您不应该假设为给定成员返回除id之外的任何内容。
答案 3 :(得分:-1)
我发现这只发生在某些LinkedIn帐户上,所以这可能是因为某些隐私设置与电子邮件有关。我找不到对文档的任何引用,所以当电子邮件字段不可用时我不得不考虑这个案例。
答案 4 :(得分:-1)
使用此API:
https://api.linkedin.com/v1/people/~:(id,firstName,lastName,num-connections,picture-url,emailAddress)?format=json
login() {
let scopes:any = ['r_basicprofile', 'r_emailaddress', 'rw_company_admin', 'w_share'];
this.linkedin.login(scopes, true)
.then(() => {
this.linkedin.getRequest('people/~:(id,firstName,lastName,num-connections,picture-url,emailAddress)')
.then(res => {
this.selfData = res;
})
.catch(e => {
console.log(e);
});
})
.catch(e => {
console.log('Error logging in', e);
});
}