2014-12-18 8 views
1

나는 인증 작업을 일주일 내내하고 있습니다. 나는 작업을 입수했습니다Torii 액세스 사용자 정보가있는 Ember-Simple-Auth

  • 엠버 - CLI
  • 엠버 - 심플 인증
  • 토리
    • 구글 - OAuth2를 제공 나가에 실패 입증 그러나

google에서 사용자 정보를 얻는 것. 나는 그들의 문서에 명시된 바와 같이 도리 어댑터를 만드는 시도했지만 내가 내 구글-foo는 소진 한 당신의 도움을 요청하고

// app/torii-adapters/application.js 
export default Ember.Object.extend({ 
    open: function(authorization){ 
    console.log('authorization from adapter', authorization); 
    } 
}); 

호출 할 나타나지 않습니다. 이것은 권한 부여를위한 훌륭한 도서관 조합입니다. 그러나 문서는이 경우에 부족하고, 알아 냈을 때 나는 다시 기여할 것입니다.

+0

실제 문제가 무엇인지 확실하지. 위의 코드는 토리 공급자입니까? Google로부터 사용자 정보를 얻을 수 없다는 것은 무엇을 의미합니까? – marcoow

+0

난 그냥 구글 (이름, 성, 이메일 등)에서 사용자 계정 정보를 표시 할 수 있기를 원한다. 위의 도리 어댑터이지만 지금은 내가 필요하다고 생각하지 않습니다. 토리 (Torii)는 세션 정보 (이 기능은 기본적으로 사용하지 않도록 설정되어 있음)에이 정보를 제공하고 Ember Simple Auth에 사용자 정보가 표시되지 않는 자체 권한을 가지고 있다고 말합니다. – Frozenfire

+0

Ember Simple Auth는 세션을 정의하며 Ember Simple Auth 도리 오 인증기를 사용하면 도리 공급자가 해결하는 모든 내용이 세션을 통해 사용 가능하게됩니다. – marcoow

답변

4

내가 발생 된 문제는 당신이 정보를 액세스하지 않습니다 토리의 기본 구글-으로 OAuth2 제공 업체는 또한 대신 구글 + API

에 필요한 토큰 워크 플로우의 코드 워크 플로우를 사용하여 주셔서 감사합니다

이 문제를 해결하기 위해 jQuery GET 요청을 G + API에 사용하는 맞춤형 제공 업체를 작성한 후 userName과 userEmail을 반환하여 콘텐츠 아래 세션에 액세스했습니다.

내가 구글이 완료 시작 사용하여 타다 남은 응용 프로그램을 승인 자세히 설명하는 전체 튜토리얼을 썼다 here

//app/torii-providers/google-token.js 
import {configurable} from 'torii/configuration'; 
import Oauth2Bearer from 'torii/providers/oauth2-bearer'; 

var GoogleToken = Oauth2Bearer.extend({ 
    name: 'google-token', 
    baseUrl: 'https://accounts.google.com/o/oauth2/auth', 

    // additional params that this provider requires 
    requiredUrlParams: ['state'], 
    optionalUrlParams: ['scope', 'request_visible_actions', 'access_type'], 

    requestVisibleActions: configurable('requestVisibleActions', ''), 

    accessType: configurable('accessType', ''), 

    responseParams: ['token'], 

    scope: configurable('scope', 'email'), 

    state: configurable('state', 'STATE'), 

    redirectUri: configurable('redirectUri', 
          'http://localhost:8000/oauth2callback'), 

    open: function(){ 
     var name  = this.get('name'), 
      url   = this.buildUrl(), 
      redirectUri = this.get('redirectUri'), 
      responseParams = this.get('responseParams'); 

     var client_id = this.get('client_id'); 

     return this.get('popup').open(url, responseParams).then(function(authData){ 
     var missingResponseParams = []; 

     responseParams.forEach(function(param){ 
      if (authData[param] === undefined) { 
      missingResponseParams.push(param); 
      } 
     }); 

     if (missingResponseParams.length){ 
      throw "The response from the provider is missing " + 
       "these required response params: " + responseParams.join(', '); 
     } 

     return $.get("https://www.googleapis.com/plus/v1/people/me", {access_token: authData.token}).then(function(user){ 
      return { 
      userName: user.displayName, 
      userEmail: user.emails[0].value, 
      provider: name, 
      redirectUri: redirectUri 
      }; 
     }); 
     }); 
    } 
}); 

export default GoogleToken; 
+0

당신은 도리를 통해 페이스 북 로그인을 위해 같은 것을 구현하는 방법에 대해 제안하거나 가이드 할 수 있습니까? 즉 도리의 승인 토큰을 기반으로 페이스 북에서 사용자 세부 정보를 가져 옵니까? – Ajey

+1

기본 토리 페이 스북 공급자를 사용한 다음 페이스 북의 API를 사용하면 효과가 있습니다. 빠른 시작 데모의 코드처럼 보입니다. https://developers.facebook.com/docs/facebook-login/login-flow-for-web/v2.2 – Frozenfire