StratoSphere Stream


이번 글은 구글 gmail api를 이용해서 구글 로그인을 하는 방법을 다룬다.


원래는 레퍼런스를 보고 이해를 해야 하지만... 설명이 길면 백과사전이 되는 법. 어떤 과정이 필요한지를 요약하는게 좋을거 같아서 만들었다.


아직까지 어카운트 링크를 다룬 글도 없기도 하고.


0. 시작하기


Dialogflow - 구글 어시스턴트 앱에 로그인을 위해서는 OAuth가 필요하다. 직접 서버를 만드는 방법도 있고 서비스회사에서 서비스를 사는 방법도 있는데


여기서는 간단하게 만드는 테스트 삼아 구글 gmail을 쓴다.



1. API 설정



https://console.cloud.google.com/apis/dashboard 로 이동한다.




빨간 박스로 이동하고나서 "Credentials" 을 검색하면

'


위와같이 하나가 뜬다. 저걸 on한다.


본인은 이미 on되있는 상태라 저렇다.




이런 화면이 나오는데 여기서 사용자 인증 정보  클릭후 사용자 인증 정보 만들기 를 누른다.




그리고 OAuth 클라이언트 ID를 클릭





이 화면이 나오면 다음과 같이 입력한다.


승인된 리디렉션 URI는 https://oauth-redirect.googleusercontent.com/r/your-project-id 형태로 입력을 하면된다.


프로젝트 실제 id 는 action console이나 dialogflow 설정에 보면 나온다.




이 부분에 있다. 그대로 복사한다.



예를들어 고급레스토랑이라는 앱이 있고 프로젝트의 id가 advancedrestaurant 라고 한다면.


https://oauth-redirect.googleusercontent.com/r/advancedrestaurant


이런식으로 만들면 된다.





이제 만들어진 프로젝트를 간다.

위의 화면이 나오는데, 클라이언트의 id와 보안비밀번호를 나중에 쓸것이다.

참고로 그냥 복사할때 빈칸도 복사되는데 이 점을 주의해야 한다.


2. Dialogflow 부분



기능은 다들 알아서 만들겠지만 초기 2개는 중요하다.

welcome intent와 그후 실행할 intent인 get Signin인텐트


초기 시작인 welcome intent는 그냥 webhook만 활성화 해 두었으며

sign in부분에 EVENT를 넣었다.

왜 넣었냐면, Webhook부분에

// Create a Dialogflow intent with the `actions_intent_SIGN_IN` event 라고 주석이 있어서(..)

저렇게 해야 인식이 된다.



welcome인텐트는 초기 로그인에서만 쓰이며, 로그인된 계정은 이후 get Signin인텐트 flow만 쓴다.



다음으로는 integrantions를 한다.



Sign in required를 체크하고 오른쪽 하단의 manage assistant app을 클릭



왼쪽 메뉴에서 하단의 Account linking을 클릭하면

이제 입력만 남았다.






일단 다음과 같이


Linking type은 

OAuth

Authorization code로 한다.




이제 이 부분을 입력해야 한다.


생각이 안날수 있으니 아래를 펼치면 볼수 있다


더보기


Client ID issued by your Actions to Google : 이 부분에는 클라이언트 ID를 넣으면 된다.

Client secret: 클라이언트 보안 비밀을 넣으면 된다.

Authorization URL: https://accounts.google.com/o/oauth2/v2/auth

Token URL : https://www.googleapis.com/oauth2/v4/token


Authorization URL 에 https://accounts.google.com/o/oauth2/v2/auth 주소를 넣으면 안된다고 빨간글씨가 뜰때가 있는데

그때는 https://accounts.orion.com/o/oauth2/v2/auth 같은 걸 넣고 나서save를 하고 다시 원래의 주소

https://accounts.google.com/o/oauth2/v2/auth주소를 넣고 저장하면 된다.


마지막으로 Scopes가 있는데 여기서는 서비스상 메일주소가 필요하기 때문에 메일주소 api를 받는다.

api리스트는 아래의 주소를 가보자.





여러 api가 있는데 메일은 이 부분이 scope에 넣을 주소이다.


이 부분을 부실하게 알려주어서 햇갈리는데, 사진에 보이듯이 저 주소를 넣으면 된다.





마지막으로 제출때의 문제이긴 한데, Account linking앱들의 경우 계정들이 필요하다

계정은 테스터들이 생성하지 않고 개발자가 만들어서 줘야 한다.

고로 저 부분에 테스트용 계정을 입력하면 된다.

안하면 deny 행.



참조 글 : https://stackoverflow.com/questions/44288981/how-to-authenticate-user-with-just-a-google-account-on-actions-on-google

Comment : 0