2012년 9월 26일 수요일

Meteor auth branch 변경 사항. 0.4.1 버전 9/22 기준

http://spectrumdig.blogspot.kr/2012/08/meteor-039.html 이후로 업데이트가 좀 되었다.

api key/secret 을 더 이상 소스 안에서 관리 안함.
accounts-ui 를 사용할 것을 권장하고 있다.

$ meteor mongo 로 접근
> db["accounts._loginServiceConfiguration"].find()
{ "service" : "facebook", "appId" : "appID", "secret" : "app Secret", "_id" : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxx" }
이와 같은 형태로 설정.

재설정시 서비스 명을 기준으로 remove
> db["accounts._loginServiceConfiguration"].remove({service:"facebook"})

그룹스의 글을 일단 옮겨와 본다.
기존에 setSecret method 및 config method 는 전부 지우고 Meteor.accounts.configuration collection 에 넣으라는 소리를 하는데

그것만으론 안된다. appID하고 appSecret은 지우고 collection 에 넣든 accounts-ui 를 써서 다시 지정했다고 해도 OAuth 인증 후 callback 으로 돌아오는 URL이 무조건 localhost:3000으로 되는 오류가 있는데 ROOT_URL 환경변수를 어플리케이션의 URL로 설정하던가
__meteor_runtime_config__.ROOT_URL = "http://<callback 받을 어플리케이션 URL>" ;
로 서버쪽 startup function 안쪽에 넣던가 하라고 한다.
그룹스 없으면 어쩌려고 이놈들이;;

출처는 https://groups.google.com/d/msg/meteor-core/cVyomNZJzBg/3GdyEmkgtQgJ

이래저래 해봐도 다 안되서 그냥 환경변수 잡았다. 그리고 서버사이드에서 초기화 할때 collection을 잡았다.

결론은 아래 3단계 작업을 해주면 된다.

  1. meteor 기동전에 환경 변수를 잡는다.

    export ROOT_URL=http://<callback 받을 어플리케이션 URL>
  2. server쪽에 startup function 안에 텅빈 Meteor.accounts.configuration collection에 설정을 insert 한다.

    config = Meteor.accounts.configuration
    config.insert({ "service" : "facebook", "appId" : "appID", "secret" : "app Secret"});
  3. meteor 기동
기존에 Meteor.user() 를 사용했다면 오브젝트 구조가 바뀐 것에 주의하자.
Meteor.user().name 을 사용했다면 Meteor.user().profile.name 을 사용해야한다.

* PS : accounts-passwords 패키지가 accounts-password 로 단수형이 되었다 (....)