在AngularJS项目中集成linkedIn API

时间:2018-09-18 19:14:52

标签: javascript angularjs linkedin-api

我是Angular和Java语言的新手,我正在尝试将linkedIn API集成到我的angularJS项目中进行注册,以便使用linkedIn数据自动填充某些表格。我已经对其进行了测试,但是所有内容都在同一文件中(在视图中),如下所示:

 <script type="in/login" data-onAuth="onLinkedInAuth">  </script>
 <script type="text/javascript">

   function onLinkedInAuth() {
     IN.API
     .Raw('/people/~:(id,firstName,lastName,formatted-name,num-connections,location,positions:(id,title,summary,start-date,end-date,is-current,company:(id,name,type,size,industry,ticker)),summary,email-address,specialties)?format=json')
     .method('GET')
     .result(getResults)
     .error(onError)

   };

   function getResults(result) {
     console.log(result);
     document.getElementById('full_name').value = result.formattedName || '';
     document.getElementById('local').value = result.location.country.code || '';
     document.getElementById('summary').value = result.summary || '';
     document.getElementById('email_address').value = result.emailAddress || '';

   }

   function onError(error) {
     console.log(error)
   }
 </script>

但是现在我想做所有这一切,但是要使用服务和控制器,例如:

按LinkedIn按钮->控制器->服务-> linkeInAPI->服务->控制器->视图(用数据填充表单,在这种情况下为多个视图)。

我已经创建了linkedInService.js,linkedInController.js。

问题是我真的不知道该怎么做,因为我不熟悉这一切。如果有人可以帮助我,那就太好了。 谢谢。

1 个答案:

答案 0 :(得分:0)

通常,angularjs项目包含具有各种用途的各种文件。

这是angularjs项目的一个可能的项目结构(取自this网站)请注意,这种结构并不完美,甚至还有更好的方法来构造angularjs代码({{3}中的示例}文章解释得非常好),但这是一个可以开始的简单结构

 
<div class="container-loading">
  <div class="grid">
    <div class="user-name">
      Username
    </div>
    <div class="user-image">
      <a href="https://www..com/#/profile">
        <img class="usrimg" src="https://www.core-studio.de/212img.png">
      </a>
    </div>
  </div>
</div>

所以一个可能的出发点是将所有与linkedin相关的代码添加到LinkedinService中,然后从您的控制器内部调用此LinkedinService:

app/
----- controllers/ --> controllers "glue" together html files with code logic
---------- mainController.js
---------- otherController.js
----- directives/
---------- mainDirective.js
---------- otherDirective.js
----- services/ --> services are reusable functions that you define that can get reused in controllers
---------- userService.js 
---------- itemService.js
----- js/
---------- bootstrap.js
---------- jquery.js
----- app.js
views/
----- mainView.html
----- otherView.html
----- index.html

,然后调用您的一个控制器:

  .service('LinkedinService', function ($http){

        this.loginWithLinkedin = function (){

         return IN.API
               .Raw('/people/~:(id,firstName,lastName,formatted-name,num-connections,location,positions:(id,title,summary,start-date,end-date,is-current,company:(id,name,type,size,industry,ticker)),summary,email-address,specialties)?format=json').method('GET')
        };

我还看到您正在使用LinkedinService.loginWithLinkedin().then(function (data) { console.log('linkedin login data:', data); }) 更改dom 在angularjs中应避免这种情况,因为它应该使用this

完成