파이어베이스 커스텀 토큰을 이용한 데이터베이스 접근권한 설정하기


파이어베이스 데이터베이스에 조건에 따라 접근권한을 다르게 하려고 커스텀 토큰을 이용하게 되었다.
커스텀 토큰을 만들고 파이어베이스에 규칙을 적용한 다음 테스트를 해보려고 했는데 REST API에 JWT토큰을 아무리 넣어봐도 작동하지 않았다.

?auth=CUSTOM-TOKEN 파라미터로도 넣어 보았고,
Authorization: bearer CUSTOM-TOKEN 헤더로도 넣어 보았지만

"error" : "Permission denied"
"error" : "Expected an ID token, but was given a custom token." 같은 오류만 보여줄 뿐이었다.

REST에서 커스텀 토큰을 사용할 방법을 한참 찾다가 FireBase Rest with auth query param not working(http://stackoverflow.com/questions/39117237/firebase-rest-with-auth-query-param-not-working)이라는 글에서 답을 찾았다.

REST API 에서는 커스텀 토큰을 사용할 수 없다.

REST에서 커스텀 클레임을 사용하기 위해서는, auth_variable_override 파라미터를 사용해야 한다.
{"uid":"6LiF16Dm0hNB9XO61UR1KM5Jeun2"}
위의 uid를 사용한다면 아래처럼 요청해야 한다.
$ curl "https://dbname.firebaseio.com/test.json?access_token=&auth_variable_override=%7B%22uid%22%3A%226LiF16Dm0hNB9XO61UR1KM5Jeun2%22%7D" {" 1213314":{"alanisawesome":"Alan Turing"}}


결국 파이어베이스의 커스텀 토큰을 테스트하려면 파이어베이스 라이브러리를 사용해야 한다.
그래서 파이어베이스 커스텀 토큰 테스트를 위한 예제 프로젝트를 node.js로 간단히 만들었다.
아래 예제를 따라 하면 파이어베이스의 커스텀 토큰으로 데이터 베이스 접근 권한을 제어하는 흐름을 볼 수 있다.

커스텀 토큰으로 데이터 베이스 접근 권한 설정하기(https://github.com/dorajistyle/firebase-custom-token-sample/blob/master/readme-ko.md)


참고

https://firebase.google.com/docs/admin/setup
https://firebase.google.com/docs/auth/cpp/custom-auth
https://firebase.google.com/docs/auth/admin/create-custom-tokens
https://firebase.google.com/docs/reference/security/database
http://stackoverflow.com/questions/37426093/using-custom-tokens-to-make-rest-requests-to-fb-db-as-an-admin
http://stackoverflow.com/questions/39117237/firebase-rest-with-auth-query-param-not-working
https://jwt.io/



by


Tags : , , , , , , ,

  • 재미있게 읽으셨나요?
    방랑자의 이야기.
    월풍도원에선 기부를 받습니다.

구글 블로거와 궁합이 맞는 광고. 구글 애드센스.


2011년 말에 제 블로그에서 광고를 지웠었어요.
블로그를 찾아주시는 분들의 가독성을 해치고 싶지 않았기 때문입니다.
대신 기부코너를 만들었었죠.
이번에 다시 광고를 단 건, 요즘 생활이 어려워서입니다.^^;
비록 구글 애드센스 수익이 얼마 되진 않지만, 한 달에 밥 한 끼도 아쉬운 요즘이라 그렇습니다.

구글 애드센스와 블로거의 만남-'시리아 팔미라'

구글 블로거에 애드센스 다는 방법

구글 블로거는 애드센스와 연동이 잘되어 있습니다.

  1. 구글 블로거 내 블로그 메뉴로 갑니다.
  2. 수익 > 내 블로그에 광고 보이기 체크박스에 '예'라고 선택만 하면 광고가 바로 나옵니다.
  3. 물론 애드센스 계정은 가지고 있어야 합니다.
  4. 광고 스타일은 레이아웃에서 변경합니다.

블로그 광고 수익이 아쉽지 않을 정도의 형편이 되면,
구글 애드센스 광고를 내리도록 하겠습니다.:D

꾸준히 월풍도원을 찾아주셔서 고맙습니다.
행복하세요!



by


Tags : , , , , , , , ,

  • 재미있게 읽으셨나요?
    방랑자의 이야기.
    월풍도원에선 기부를 받습니다.

구글 블로거에 관련 글 보여주기를 추가하는 방법입니다.

블로그 새단장을 준비하며, 예전에 짜 두었던 관련 글 보여주기 소스를 좀 개선했습니다.
내 블로그에서 같은 태그가 달린 글을 검색해서 관련 글로 보여줘요.
관련글 보여주기를 달기 위해선 템플릿(스킨)을 수정해야 합니다.
구글 블로거에 관련 글 보여주기를 달고 싶은 분은, 마음껏 가져다 쓰세요.:D

Head 태그 안에 다음 코드를 추가 해 줍니다.(구글 API키 필요)

<script src='http://www.google.com/jsapi?key=MYAPIKEY' type='text/javascript'/>

스타일 시트에 다음 코드를 추가 해 줍니다.

#related-side{display:none;visibility:hidden;} #related-posts{padding:15px;}

구글 블로거 템플릿에서 <data:post.body/>를 검색해서, <data:post.body/> 아래에 다음 코드를 추가해 줍니다.

<aside id="related-side">
<br/>
<h4><data:post.title/> 관련 글</h4>
<div id='related-posts'/>
</aside>
<script type='text/javascript'>
// 구글 블로거용 관련글 검색 모듈 by 月風(http://dorajistyle.pe.kr)
google.load(&quot;gdata&quot;, &quot;1.x&quot;, { packages : [&quot;blogger&quot;] });
    function getRelated() {
    function eliminateDuplicates(arr) {var i,j=0,len=arr.length,out="",obj={};for (i=0;i&lt;len;i++) {obj[arr[i]]=0;}for (i in obj) {if(j>=9)break; out+=i;j++;}return out;}   
    var relPostArray = new Array();
    var funcvar1=0;    var bloggerService = new google.gdata.blogger.BloggerService(&#39;dorajistylerelatedposts&#39;);
    var handleQueryResults = function(resultsFeedRoot) {   
    var blogFeed = resultsFeedRoot.feed;var html,postTitle,entryUri;var postEntries = blogFeed.getEntries();for (var i = 0; postEntry = postEntries[i]; i++) {var postTitle=postEntry.getTitle().getText(),entryUri=postEntry.getHtmlLink().getHref();if(title==postTitle) continue;var html= &#39;&lt;li&gt;&lt;a rel=\&#39;bookmark\&#39; title=\&#39;&#39;+ postTitle + &#39;\&#39; href=\&#39;&#39;+entryUri+&#39;\&#39;&gt;&#39;+ postTitle + &#39;&lt;/a&gt;&lt;/li&gt;&#39;;
    relPostArray.push(html);}   
    funcvar1++;    if (funcvar1 == filtArray.length) {var urlfinal=eliminateDuplicates(relPostArray);if(urlfinal.length>0){var aside=document.getElementById(&quot;related-side&quot;);aside.style.display=&#39;block&#39;;aside.style.visibility=&#39;visible&#39;;var elem=document.getElementById(&quot;related-posts&quot;);var content=&#39;&lt;ul&gt;&#39;;content+=urlfinal;content+=&#39;&lt;/ul&gt;&#39;;
    elem.innerHtml=&#39;&lt;ul&gt;&#39;;elem.innerHTML=urlfinal;elem.innerHtml+=&#39;&lt;/ul&gt;&#39;;elem.innerHtml+=content;}}
    };       
    var handleError = function(error) {};
    var tagString=&#39;&#39;;
    var labelArray = new Array();<b:loop values='data:post.labels' var='label'>
    tagString+=&quot;<data:label.name/>&quot;;
    tagString+=&#39;,&#39;
    </b:loop>       
    tagString=tagString.substring(0,tagString.length-1);
    var filtArray = tagString.split(&#39;,&#39;);var title =&#39;<data:post.title/>&#39;;
    var feedUri,query;    for (var i = 0; i &lt; filtArray.length; i++){feedUri = &#39;/feeds/posts/default/-/&#39; + filtArray[i]; query = new google.gdata.blogger.BlogPostQuery(feedUri);    bloggerService.getBlogPostFeed(query, handleQueryResults, handleError);}
    }   
    google.setOnLoadCallback(getRelated);
</script>

구글 블로거용 관련글 보여주기 모듈로, 블로그 방문자들에게 편의를 제공하세요.:D



by


Tags : , , , , , , ,

  • 재미있게 읽으셨나요?
    방랑자의 이야기.
    월풍도원에선 기부를 받습니다.

Click Here to read English Article


트랙백 보내기, 딜리셔스, 텀블러,관련글 검색,다음 뷰 보내기의 도구를 제공하는 구글 블로거용 그리즈몽키 스크립트 입니다.

트랙백 보내기를 지원하는 구글 블로거 도구 그리즈몽키 스크립트

구글 블로거의 새로운 인터페이스를 사용하기로 결정했습니다.
새 인터페이스가 깔끔하긴 한데, 제가 자주 쓰는 기능은 들어 있지 않군요.
부족한 기능은 만들어 써야지 별 수 있나요.
Jquery와 그리즈몽키 스크립트를 이용해서 블로거용 도구를 만들었습니다.
게시물 목록에서 발행된 글 편집을 누르면 오른쪽 글 설정창에 도구가 나타납니다.
구글 블로거를 쓰신다면, 구글 블로거 도구로 더욱 편리하게 블로깅을 즐기세요!

구글 블로거 그리즈몽키 스크립트

이 스크립트는 단순하지만 강력한 기능을 제공하는 구글 블로거용 그리즈몽키 스크립트입니다. 트랙백 보내기, 딜리셔스 링크, 텀블러 링크, 다음뷰 전송, 관련글 검색 기능을 제공합니다.

구글 블로거용 도구를 소개합니다.
Jquery와 gresemonkey스크립트를 이용해 개발했습니다.
단순하지만 기능이 강력해요.
트랙백 보내기, 딜리셔스 링크, 텀블러 링크, 관련글 검색, 다음뷰로 보내기 기능을 제공합니다.

#트랙백 보내기
- 트랙백 보내기 기능입니다.
한 줄에 하나씩 트랙백 주소를 넣어주세요.
보낸 트랙백에 대한 자세한 정보는,
Error Console(CTRL+SHIFT+J)의 Message에서 확인 가능합니다.

#딜리셔스 링크, 텀블러 링크
- 한번의 클릭으로 딜리셔스와 텀블러에 해당 글을 쓰는 기능을 제공합니다.

#구글 관련글 검색
- 글 제목으로 구글에서 관련 글을 검색합니다.

#다음 뷰로 보내기
- 다음 뷰로 해당 글을 보냅니다.(다음뷰에서 블로그 연동을 해 두셔야 해요.)
'다음뷰자동전송'을 선택하면 태그에서 분류를 선택하여, 자동으로 전송합니다.

* 블로거의 새로운 디자인에서만 작동해요.(구 인터페이스에서는 사용 불가능 합니다.)

사용법:

  • - 이 스크립트를 설치하세요.
  • - 게시물 목록으로 갑니다.
  • - 게시된 글의 '편집'을 누르세요.(임시 저장글에선 작동하지 않습니다.)
  • - 자유롭게 이용하세요.:D

구글 블로거 도구 그리즈몽키 스크립트 내려받기

Google Blogger Article Tools  Gresemonkey Script

It's a fancy tools for google blogger.
The code using jquery and greasemonkey script.
It offers simple but powerful functions to google blogger user.
Send Trackbacks, Delicious Link, Tumblr Link and Related Articles Search from Google.

#Send Trackbacks
- You can send trackbacks to trackback links.
Trackback addresses should be separated by newline.(Enter key)
You can see the information of trackbacks at Message Console(CTRL+SHIFT+J).

#Delicious Link , Tumblr
- You can save your article to delicious,tumblr easily.

#Related Articles Search from Google
Related Articles Search query is the title of article.

* This script works on new blogger interface only.

How to use:

  • - Install this script.
  • - Go to article list.
  • - Click 'edit' on a published article. (It's not works on a draft one.)
  • - Use this tool freely.

 

Google Blogger Article Tools - Gresemonkey Script Download

by 月風



by


Tags : , , , , , , , ,

  • 재미있게 읽으셨나요?
    방랑자의 이야기.
    월풍도원에선 기부를 받습니다.

What will happen to me (WWHtoMe)



소개



“What will happen to me?"는 웹에 등록된 각종 공연/행사 정보,

학교 시험 시간표,커뮤니티 스케쥴 등을 RSS로 받아와서,

앞으로 무얼 할까 고민하는 사람들에게 도움을 주는 소프트웨어입니다.

정보를 제공하는 사이트에서 포스팅할때 publish date를 수정할 수 있는것을 이용하여,

일정이 있는 날에 포스팅 한 것을, RSS Feed로 받아오게 됩니다.

사용자는 각종 행사 정보가 가득한 달력을 보며 휴일이나, 일과후의

계획을 좀 더 편하게 잡을 수 있습니다.



사용방법

어플리케이션을 실행하면 다음과 같은 화면이 나옵니다.





일정관리 어플리케이션 What will happen to me? - 안드로이드 어플리케이션[안드로이드,android,application]



메뉴 버튼을 눌러서 RSS Feed를 받아올 채널을 추가해주세요.(RSS1.0,RSS2.0,ATOM)

받아올 feed items의 publish date는 일정이 잡힌날로 posting 되어 있어야 합니다.



- 채널 예제 - (6월)

Exam : http://dorajistyle.pe.kr/scheduleExam.php?tempskin=_rss2

Exhibition : http://dorajistyle.pe.kr/SDexhibition.php?tempskin=_rss2

Movie : http://dorajistyle.pe.kr/SDmovie.php?tempskin=_rss2




일정관리 어플리케이션 What will happen to me? - 안드로이드 어플리케이션[안드로이드,android,application]



채널명 주소를 적고 채널을 잘 나타내 줄 수 있는 아이콘을 선택하고 Enter키나 Dpad의 Center 버튼을 누르면 채널이 추가됩니다.




일정관리 어플리케이션 What will happen to me? - 안드로이드 어플리케이션[안드로이드,android,application]

예제 채널들을 추가 하였습니다.




일정관리 어플리케이션 What will happen to me? - 안드로이드 어플리케이션[안드로이드,android,application]

메뉴의 Retrive all을 이용하여 추가한 채널들에서 일정을 받아옵니다.

하나의 채널에서만 받아오려면 채널을 선택후, Retrieve this를 선택하시면 됩니다.

받아오기를 하는동안 상태바에 아이콘이 표시됩니다.




일정관리 어플리케이션 What will happen to me? - 안드로이드 어플리케이션[안드로이드,android,application]

받아오기가 완료되었으면 일정을 확인하기 위해 Schedule Viewer로 이동합니다.




일정관리 어플리케이션 What will happen to me? - 안드로이드 어플리케이션[안드로이드,android,application]

뷰어에서는 다양한 키가 사용됩니다.



스케쥴 리스트 보기 모드 변경키

Q: show all schedule items 토글 (과거의 일정은 포함하지 않는다)

E: favorites schedule items 토글

F: 전체화면 모드 토글



달력 컨트롤을 위한 키

A: 3달 전으로 커서를 이동

D: 3달 후로 커서를 이동

W: 한달 전으로 커서를 이동

S: 한달 후로 커서를 이동

DPAD_UP: 일주일 전으로 커서를 이동

DPAD_DOWN: 일주일 후로 커서 이동

DPAD_LEFT: 하루 전으로 커서 이동

DPAD_RIGHT: 하루 후로 커서 이동



리스트 컨트롤을 위한 키

NEW_LINE , DPAD_CENTER: 선택된 아이템 자세히 보기

PERIOD : 리스트 커서를 한칸 위로 이동

COMMA : 리스트 커서를 한칸 밑으로 이동

M : favorites에 추가/해제



약속을 만들고 싶은날로 커서를 이동해서 어떤 일들이 벌어지고 있는지 볼 수 있습니다.




일정관리 어플리케이션 What will happen to me? - 안드로이드 어플리케이션[안드로이드,android,application]



favorites 보기에서는 favorites로 추가한 아이템들을 볼 수 있습니다.




일정관리 어플리케이션 What will happen to me? - 안드로이드 어플리케이션[안드로이드,android,application]



스케쥴이 있는 날로 커서를 이동하면, 그날의 스케쥴이 보이게 됩니다.




일정관리 어플리케이션 What will happen to me? - 안드로이드 어플리케이션[안드로이드,android,application]



메뉴키를 눌러서 채널 리스트 화면으로 갈 수 있습니다.




일정관리 어플리케이션 What will happen to me? - 안드로이드 어플리케이션[안드로이드,android,application]



리스트의 아이템을 선택하면 일정에 대한 좀 더 자세한 정보를 볼 수 있습니다.




일정관리 어플리케이션 What will happen to me? - 안드로이드 어플리케이션[안드로이드,android,application]



메뉴키를 눌러서 채널 리스트 화면으로 갈 수 있습니다.




What Will Happen to Me?



Introduction



“What Will Happen to Me?” is an Android application, which allows users retrieve performance/event information,class schedules and community schedules that are registered on Internet sites through RSS and helps people decide what they should do instantly.

When website administrators post such information, users can retrieve posted information that are scheduled on the date of the event.

The users can easily plan and make schedules according to the calendar with information of the events.



How to use?

Once you execute this application, you will see the screen like below:





일정관리 어플리케이션 What will happen to me? - 안드로이드 어플리케이션[안드로이드,android,application]



Press [menu] to add RSS Feed channels.(RSS1.0,RSS2.0,ATOM)

The publish date should be posted on the date of event.



- Channel sample - (June)

Exam : http://dorajistyle.pe.kr/scheduleExam.php?tempskin=_rss2

Exhibition : http://dorajistyle.pe.kr/SDexhibition.php?tempskin=_rss2

Movie : http://dorajistyle.pe.kr/SDmovie.php?tempskin=_rss2




일정관리 어플리케이션 What will happen to me? - 안드로이드 어플리케이션[안드로이드,android,application]



Put channel address and select the icon that can show the channel type well. Then press [Enter] or [DPAD_CENTER] buttun, and the channel will be added.




일정관리 어플리케이션 What will happen to me? - 안드로이드 어플리케이션[안드로이드,android,application]

Sample channels are added.




일정관리 어플리케이션 What will happen to me? - 안드로이드 어플리케이션[안드로이드,android,application]

Download schedules from added channels through “Retrieve all” in the menu.

If you want to retrieve from one channel, select channel and press “Retrieve this".

While retrieving channel, icon on status bar will appear.




일정관리 어플리케이션 What will happen to me? - 안드로이드 어플리케이션[안드로이드,android,application]

When retrieving gets completed, move to “Schedule Viewer” to check schedules.




일정관리 어플리케이션 What will happen to me? - 안드로이드 어플리케이션[안드로이드,android,application]

In the viewer various types of buttons are used.



Buttons to change to schedule list view mode.

Q: toggle show all schedule items. (except the schedules in the past)

E: toggle show favorate schedule items.

F: toggle full screen list.



Buttons to control calendar.

A: move the cursor to three months before.

D: move the cursor to three months after.

W: move the cursor to a month before.

S: move the cursor to a month after.

DPAD_UP: move the cursor to a week before.

DPAD_DOWN: move the cursor to a week after.

DPAD_LEFT: move the cursor to a day before.

DPAD_RIGHT: move the cursor to a day after.



Buttons to control list.

NEW_LINE , DPAD_CENTER: view details of selected list item.

PERIOD : move the list cursor to the previous list item.

COMMA : move the list cursor to the next list item.

M : add or remove to/from favorites



You can view the schedules of the date you want to make appointments by moving cursor to that day.




일정관리 어플리케이션 What will happen to me? - 안드로이드 어플리케이션[안드로이드,android,application]

You can see added favorites items in the favorites view mode.




일정관리 어플리케이션 What will happen to me? - 안드로이드 어플리케이션[안드로이드,android,application]

Once you move the cursor to the date of event, you will see the schedules of the date.




일정관리 어플리케이션 What will happen to me? - 안드로이드 어플리케이션[안드로이드,android,application]

You can move to the channel list screen by pressing [menu].




일정관리 어플리케이션 What will happen to me? - 안드로이드 어플리케이션[안드로이드,android,application]

Once you select the item of the list, you can see more detail information about the schedule.




일정관리 어플리케이션 What will happen to me? - 안드로이드 어플리케이션[안드로이드,android,application]



You can move to the channel list screen or schedule viewer screen by pressing [menu].





by


Tags : , , , , , , , , ,

  • 재미있게 읽으셨나요?
    방랑자의 이야기.
    월풍도원에선 기부를 받습니다.

안드로이드에서 데이터베이스를 열지 못할때. [안드로이드,데이타베이스,DB,database,android]

이미지출처 : news.cnet.com

안드로이드에서 데이터베이스를 열지 못할때.








안드로이드를 사용해서 뭔가 만들어보려고 뚝딱거리다가,



어느순간 m5버젼이 나왔다.



m3버젼을 쓰고 있었는데, m5버젼이 나왔다.



돌아가는 모습을 좀 보려고 튜토리얼을 실행시켰는데.. 이런!



데이터베이스를 열지 못한다. nullPointerException이 나온다.



프로그램을 처음 접했을 때부터 무던히도 날 괴롭히던 녀석이..



여기서도 어김없이 등장했다.



디버깅 모드를 써서 추적을 해봐도..



추적이 쉽지않다.



결국 추적을 위해 비슷한 어플리케이션을 만들어서..



아직 api 소스가 나오지도 않았기에 역컴파일까지 해서 추적을 했더니…



db를 쓰지도 못하고 읽지도 못하는것 아닌가!



그래서 db에 null값이 들어있기 때문에 이런 현상이 발생하는 것이었다.



이런! 이 문제를 어떻게 해결할 것인가..



이건 코드 레벨에서 어찌 할 수 있는 문제가 아니었다.



방법은..



기존에 있던 유저파일을 리셋하는것이다.



에뮬레이터 실행할때.



-wipe-data 옵션을 줘서 유저데이터를 지울 수 있고,



혹은 아래의 경로에서 직접 삭제 할 수 있다.


Code:





Linux: ~/.android/userdata.img

Windows: C:\Documents and Settings\<loginname>\Application

Data\Local\Android\userdata.img


Upgrading the SDK 문서가 좀 더 일찍 나왔더라면 이런 수고는 하지 않았을텐데 아쉽다.



Reference




by


Tags : , , , , , , ,

  • 재미있게 읽으셨나요?
    방랑자의 이야기.
    월풍도원에선 기부를 받습니다.

이번에 대형 출판사인 구글에서 문학공모전을 열기로 했다.



쟝르는 안드로이드로, 다소 생소한 쟝르이기에,



전 세계 사람들에게 널리 알리고자 이번 공모전을 여는것이라고 한다.



재미있을것 같고, 좋은 경험이 될 것 같아서 친구와 함께 참여하기로 했다.



나는 글을, 친구는 약간의 삽화를 그려주기로 하였다.



일정관리를 잘해서 시간에 쫒기지 않고,



좋은 작품을 출고 할 수 있도록 해야겠다.



———————————————

Related videos



* Introducing Android





* Androidology - Part 1 of 3 - Architecture Overview




* Androidology - Part 2 of 3 - Application Lifecycle




* Androidology - Part 3 of 3 - APIs





* A first hand look at building an Android application




———————————————



Android Writer Challenge

[Android Writer Challenge - 안드로이드 공모전]



by


Tags : , , , , , ,

  • 재미있게 읽으셨나요?
    방랑자의 이야기.
    월풍도원에선 기부를 받습니다.