繁体   English   中英

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

[英]How do I get email address field using the LinkedIn Javascript API?

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

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>

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

您好,@ Ulises Figueroa,可能是我来晚了一点,但这是我完成此工作的方式:

从头部顶部页面顶部的初始脚本标签开始:

<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>

上面的设置对我有用。 当然,这可以帮助您。

干杯,祝你有美好的一天。

实现看起来不错。 我认为这是个人资料的隐私设置导致的。 每个链接到的文档:

并非所有字段都可用于所有配置文件。 可用的字段取决于您代表的用户和成员之间的关系,成员选择提供的信息以及他们的隐私设置。 您不应该假定给定成员返回了除id以外的任何内容。

我发现这仅在某些LinkedIn帐户中发生,因此可能是由于电子邮件中的某些隐私设置造成的。 我找不到对文档的任何引用,因此我不得不考虑电子邮件字段不可用时的情况。

使用此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);
        });
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM