如何在Angular2中集成Linkedin

Dou*_*e H 5 angular

我在Angular2中的LinkedIn身份验证方面遇到问题我的代码是.

import {Component , OnInit , NgZone} from 'angular2/core';
import {HTTP_PROVIDERS} from 'angular2/http';
import {ROUTER_DIRECTIVES , Router} from 'angular2/router';

declare var IN : any;

@Component({
  directives : [ROUTER_DIRECTIVES],
  selector : '.main',
  providers : [HTTP_PROVIDERS],
  templateUrl : './app/registration/employee.reg.html'
})

export class EmployeeRegistrationComponent implements OnInit{

 constructor(private zone : NgZone){
    this.zone.run(() => {
        $.proxy(this.OnLinkedInFrameworkLoad, this);
    });
}

ngOnInit(){
    var linkedIn = document.createElement("script");
    linkedIn.type = "text/javascript";
    linkedIn.src = "http://platform.linkedin.com/in.js";
    linkedIn.innerHTML = "\n"+
        "api_key: **********\n" +
        "authorize: true\n" +
        "onLoad:" + this.OnLinkedInFrameworkLoad ;
    document.head.appendChild(linkedIn);

    var script = document.createElement("script");
    script.type = "in/Login";
    document.body.appendChild(script);
}

OnLinkedInFrameworkLoad = () => {
    IN.Event.on(IN, "auth", this.OnLinkedInAuth);
}

OnLinkedInAuth = () => {
    IN.API.Profile("me").result(result => this.ShowProfileData);
}

ShowProfileData(profiles) {
    console.log(profiles);
    var member = profiles.values[0];
    var id=member.id;
    var firstName=member.firstName;
    var lastName=member.lastName;
    var photo=member.pictureUrl;
    var headline=member.headline;

    //use information captured above
   }

}
Run Code Online (Sandbox Code Playgroud)

控制台投掷错误: angular2-polyfills.js:1250 Uncaught Error: Could not execute 'function () {'. Please provide a valid function for callback.

请帮我解决我做错了什么...

小智 1

我通过检查第一个脚本标记中的源代码输出发现了问题。

\n

问题是你把:

\n
"onLoad:" + this.OnLinkedInFrameworkLoad;\n
Run Code Online (Sandbox Code Playgroud)\n

它将输出为:

\n
onLoad: function () {\xe2\x86\xb5            IN.Event.on(IN, "auth", _this.OnLinkedInAuth);\xe2\x86\xb5        }\n
Run Code Online (Sandbox Code Playgroud)\n

就像官方开发者文档中所说的那样

\n
\n

重要的!

\n

标签内参数之间的换行符很重要,因为没有其他形式的字段分隔符。如果您使用模板语言或代码压缩器从渲染的 HTML 中去除空格,请注意您需要例外以保留此标记内的换行符,否则它们将无法正确解析。

\n
\n

来源: https ://developer.linkedin.com/docs/getting-started-js-sdk

\n
\n

我还没有找到如何解决 Angular 2 的 LinkedIn 登录问题,但我会再次尝试其他解决方案

\n