Golang으로 Google과 OAuth 2.0으로 하겠습니다.
3362 단어 Go
종지
나는 문외한 아저씨다
구글의 OAuth 2.0을 이용해 사용자 정보를 얻는 방법을 골랑에서 배웠다.
배경
사전에 필요한 일
프로그램 라이브러리
구글 API 라이브러리 가져오기go get -u google.golang.org/api/oauth2/v2
Google Developer Console
구글 Developer Console에서 API Credentials 획득
https://console.developers.google.com/apis/
Credentials의 Authorised redirect URIs에서 이 안건에 사용할 리디렉션 URL을 등록합니다http://localhost:5001/loginr
출처
이런 애들 import.
import (
"net/http"
"log"
"fmt"
"context"
"golang.org/x/oauth2"
"golang.org/x/oauth2/google"
oauthapi "google.golang.org/api/oauth2/v2"
)
우선 로그인 페이지입니다.
당신의 페이지에서 구글 로그인 페이지로 URL 만들기var conf = &oauth2.Config{
ClientID: "Your Client ID", //あなたのやつ
ClientSecret: "Your Client Secret", //あなたのやつ
Scopes: []string{oauthapi.UserinfoEmailScope},
Endpoint: google.Endpoint,
RedirectURL : "http://localhost:5001/loginr",
}
//URLを作れるよ。 yourStateUUIDは本来はCSRF対策用UUIDを入れる。
conf.AuthCodeURL("yourStateUUID", oauth2.AccessTypeOffline)
이 URL을 적당한 a탭에 넣으면 구글의 로그인 페이지로 옮길 수 있다.
아마 이런 URL이 있을 거예요.
https://accounts.google.com/o/oauth2/auth?access_type=offline&client_id=Your+Client+ID&redirect_uri=http%3A%2F%2Flocalhost%3A5001%2Floginr&response_type=code&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email&state=yourStateUUIDroot@233cc47a021e
페이지 방향 바꾸기
구글 인증 후 구글은 방문 코드로 당신의 사이트로 리디렉션할 것입니다.
서버에서는 액세스 코드를 읽고 구글에 연결해 사용자 정보를 얻는다.
func LoginRHandler(w http.ResponseWriter, r *http.Request) {
//パラメータからアクセスコードを読み取り
code := r.URL.Query()["code"]
if code == nil || len(code) == 0 {
fmt.Fprint(w,"Invalid Parameter")
}
//いろいろライブラリが頑張って
ctx := context.Background()
tok, err := conf.Exchange(ctx, code[0])
if err != nil {
fmt.Fprintf(w,"OAuth Error:%v", err)
}
//APIクライアントができて
client := conf.Client(ctx, tok)
//Userinfo APIをGetしてDoして
svr, err := oauthapi.New(client)
ui, err := svr.Userinfo.Get().Do()
if err != nil {
fmt.Fprintf(w,"OAuth Error:%v", err)
} else {
//メールアドレス取得!
fmt.Fprintf(w, "Your are logined as : %s", ui.Email)
}
}
다양한 Google API를 같은 형식으로 부르고 싶습니다.
얻다
마지막
모든 소스가 여기 있어요.
https://play.golang.org/p/ghQ0_5bdBQ4
사절하다
현대 문명을 모르는 아저씨가 쓰고 있어요.
나는 젊었을 때 권투 카드가 주류였기 때문에 키타와 지트는 모두 문외한이었다.소홀함이 있더라도 좀 더 보고 부드럽게 지적해주면 좋겠다.
Reference
이 문제에 관하여(Golang으로 Google과 OAuth 2.0으로 하겠습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hsmta/items/e43bfe449f90418c085c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이런 애들 import.
import (
"net/http"
"log"
"fmt"
"context"
"golang.org/x/oauth2"
"golang.org/x/oauth2/google"
oauthapi "google.golang.org/api/oauth2/v2"
)
우선 로그인 페이지입니다.
당신의 페이지에서 구글 로그인 페이지로 URL 만들기
var conf = &oauth2.Config{
ClientID: "Your Client ID", //あなたのやつ
ClientSecret: "Your Client Secret", //あなたのやつ
Scopes: []string{oauthapi.UserinfoEmailScope},
Endpoint: google.Endpoint,
RedirectURL : "http://localhost:5001/loginr",
}
//URLを作れるよ。 yourStateUUIDは本来はCSRF対策用UUIDを入れる。
conf.AuthCodeURL("yourStateUUID", oauth2.AccessTypeOffline)
이 URL을 적당한 a탭에 넣으면 구글의 로그인 페이지로 옮길 수 있다.아마 이런 URL이 있을 거예요.
https://accounts.google.com/o/oauth2/auth?access_type=offline&client_id=Your+Client+ID&redirect_uri=http%3A%2F%2Flocalhost%3A5001%2Floginr&response_type=code&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email&state=yourStateUUIDroot@233cc47a021e
페이지 방향 바꾸기
구글 인증 후 구글은 방문 코드로 당신의 사이트로 리디렉션할 것입니다.
서버에서는 액세스 코드를 읽고 구글에 연결해 사용자 정보를 얻는다.
func LoginRHandler(w http.ResponseWriter, r *http.Request) {
//パラメータからアクセスコードを読み取り
code := r.URL.Query()["code"]
if code == nil || len(code) == 0 {
fmt.Fprint(w,"Invalid Parameter")
}
//いろいろライブラリが頑張って
ctx := context.Background()
tok, err := conf.Exchange(ctx, code[0])
if err != nil {
fmt.Fprintf(w,"OAuth Error:%v", err)
}
//APIクライアントができて
client := conf.Client(ctx, tok)
//Userinfo APIをGetしてDoして
svr, err := oauthapi.New(client)
ui, err := svr.Userinfo.Get().Do()
if err != nil {
fmt.Fprintf(w,"OAuth Error:%v", err)
} else {
//メールアドレス取得!
fmt.Fprintf(w, "Your are logined as : %s", ui.Email)
}
}
다양한 Google API를 같은 형식으로 부르고 싶습니다.얻다
마지막
모든 소스가 여기 있어요.
https://play.golang.org/p/ghQ0_5bdBQ4
사절하다
현대 문명을 모르는 아저씨가 쓰고 있어요.
나는 젊었을 때 권투 카드가 주류였기 때문에 키타와 지트는 모두 문외한이었다.소홀함이 있더라도 좀 더 보고 부드럽게 지적해주면 좋겠다.
Reference
이 문제에 관하여(Golang으로 Google과 OAuth 2.0으로 하겠습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hsmta/items/e43bfe449f90418c085c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Golang으로 Google과 OAuth 2.0으로 하겠습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hsmta/items/e43bfe449f90418c085c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)