如何使用LinkedIn Javascript API获取电子邮件地址字段?

9
我正在使用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

4个回答

14

1- 请确保您在应用程序中开启了电子邮件权限(r_emailaddress)http://developer.linkedin.com/documents/authentication#granting

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>

希望这能对您有所帮助 :) 谢谢


2

你好,@Ulises Figueroa, 可能我有点晚了,但这是我完成此操作的方式:

首先在head部分页面顶部放置初始的script标签:

<script>
    Client Id Number here:
    onLoad: onLinkedInLoad
    authorize: true
</script>

然后,在你的JS文件中(我已经放置了一个外部JS文件来处理这个API的注册/认证),请放置以下细节:

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身份验证注册表格相关的窗口弹出:

<script type="in/Login"></script>

上述设置对我有用。相信它也能帮到你。

祝一切顺利,愉快的一天。


你是如何使用JS进行身份验证的?能否指导我一下。我按照相同的步骤进行了操作,成功登录并获取了用户详细信息。但我需要获取访问令牌并将其发送回我的服务器API,以便我们可以从服务器检查LinkedIn帐户的公司更新。 - Sankar

1

实现看起来不错。我相信这是由于个人资料的隐私设置所导致的结果。根据领英文档:

并非所有字段都适用于所有个人资料。可用字段取决于您代表其请求的用户与成员之间的关系、该成员选择提供的信息以及其隐私设置。您不应假定对于给定成员会返回除id以外的任何内容。


-1

我发现这只会发生在某些LinkedIn账户上,所以这可能是由于电子邮件的某些隐私设置引起的。我在文档中找不到任何参考,因此必须考虑当电子邮件字段不可用时的情况。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接