2016-11-16 6 views
0

Я пытаюсь создать функцию входа в систему, в которой пользователь регистрируется через LinkedIn, предоставляет разрешение на некоторые данные профиля и возвращает объект, содержащий эту информацию.Угловой 2 - Не показывать экран авторизации

Теперь я создал свое приложение после Javascript SDK - Getting Started. И Sign In with LinkedIn (Javascript SDK), который рассказывает мне 2 разных варианта.

Первый - IN.User.authorize(callbackFunction, callbackScope), который обсуждается в начале работы.

Во-вторых, в вашем HTML есть <script type="in/Login"></script>, что создаст кнопку входа.

Я пробовал оба Первый (Приступая к работе) показывает экран авторизации, но проблема заключается в том, что он просто установит cookie в браузере, показывая, что произошла успешная проверка. (по телефону IN.User.isAuthorized() возвращается true).

Проблема со вторым (вход с LinkedIn) заключается в том, что в моем браузере (Chrome) кнопки не отображается, поэтому мне нечего нажимать. Вот мой код: (удален ключ API)

home.html

<ion-header> 
    <ion-navbar> 
    <ion-title> 
     LinkedIN 
    </ion-title> 
    </ion-navbar> 
</ion-header> 

<ion-content padding> 
    <h2> LinkedIn login test </h2> 

    <!-- option 2 -- Sign in with LinkedIn docs --> 
    <script type="in/Login"></script> 

    <!-- option 1 -- check typescript --> 
    <button (click)="authorize()">Linkedin</button> 
</ion-content> 

home.ts

import { Component, OnInit } from '@angular/core'; 
import { NavController } from 'ionic-angular'; 

declare var IN; 

@Component({ 
    selector: 'page-home', 
    templateUrl: 'home.html' 
}) 
export class HomePage implements OnInit { 
    constructor(public navCtrl: NavController) {} 

    ngOnInit() { 
    IN.Event.on('auth',() => { 
     console.log("authing"); // never printed 
     IN.API.Raw("/people/~").result((data) => { 
     console.log(data); 
     }).error((error) => { 
     console.log(error); 
     }) 
    }); 

    } 

    authorize() { 
    // note: I figured data is an empty object ({}). Nothing returned 
    IN.User.authorize((data) => { 
     console.log("data is "+ JSON.stringify(data)); //[object, Object] 
     console.log("DATA: "+ data.firstName);   //undefined 
     console.log("hl: "+ data.headLine);   //undefined 
    }); 

    console.log("AUTH: "+IN.User.isAuthorized()); //true if succesfull 
    } 

} 

index.html (только голова - ничего изменилось по умолчанию)

<head> 
    .... 
    <script src="//platform.linkedin.com/in.js" type="text/javascript"> 
     api_key: 1234apikey5678 
    </script> 
    .... 
</head> 

Действия по воспроизведению

  1. Если вы еще не установить ионные и Cordova npm install -g ionic cordova
  2. создать пустой проект ionic start myApp blank --v2 --ts
  3. зарегистрировать приложение LinkedIn (набор обратного вызова) - скопировать клиентский идентификатор
  4. настроить 3 файлы, так что они выглядят, как показано выше

ответ

0

Apparen tly IN.User.authorize не предоставляет данные для обратного вызова, но может быть вызван IN.Raw.api для извлечения данных. Бит произвольной работы tbh, но он работает.

Смежные вопросы