私はGOとAPIに新しく、私はGOを使用してバックエンドを作っています。 ユーザーは自分のGoogleアカウントを使用してログインし、自分のカレンダーを変更できるはずです。 私は、ユーザーのログインを作成し、彼のカレンダーgoを使用してGoogleカレンダーを使用するためにログインするには?
0
A
答えて
2
を取得する必要がありますどのようにあなたがする必要があります私は、このリンクGoogle Quickstart
にサンプルを開いたが、私はクライアントを取得する方法は、キーであるGoogleは私に をそれを与えますような何か:
import (
"crypto/rand"
"encoding/base64"
"encoding/gob"
"golang.org/x/oauth2/google"
"golang.org/x/oauth2"
calendar "google.golang.org/api/calendar/v3"
"github.com/gorilla/sessions"
)
var conf oauth2.Config
func init() {
gob.Register(&oauth2.Token{})
}
func getLoginURL(state string) string {
// State can be some kind of random generated hash string.
// See relevant RFC: http://tools.ietf.org/html/rfc6749#section-10.12
return conf.AuthCodeURL(state)
}
func randToken() string {
b := make([]byte, 32)
rand.Read(b)
return base64.StdEncoding.EncodeToString(b)
}
func Login(w http.ResponseWriter, r *http.Request) {
conf = &oauth2.Config{
ClientID: "your-client-id",
ClientSecret: "your-client-secret",
RedirectUrl: "https://www.yoursite.com/auth",
Endpoint: google.Endpoint,
Scopes: []string{"https://www.googleapis.com/auth/calendar"}
}
state := randToken()
sess, _ := session.Get(r, "session")
sess.Values["state"] = state
sess.Save(r, w)
http.Redirect(w, r, conf.AuthCodeURL(state), http.StatusFound)
}
func Auth(w http.ResponseWriter, r *http.Request) {
sess, _ := session.Get(r, "session")
state = sess.Values["state"]
if state != r.URL.Query().Get("state") {
http.Error(w, "authorization failed", http.StatusUnauthorized)
return
}
tok, _ := conf.Exchange(oauth2.NoContext, c.QueryParam("code"))
sess.Values["token"] = tok
sess.Save(r, w)
http.Redirect(w, r, "https://www.yoursite.com/profile", http.StatusFound)
}
func GetClient(r *http.Request) *http.Client {
sess, _ := session.Get(r, "session")
tok, _ := sess.Values["token"].(*oauth2.Token)
client := conf.Client(oauth2.NoContext, tok)
return client
}
func Calendar(w http.ResponseWriter, r *http.Request) {
client := GetClient(r)
calendarService, _ = calendar.New(client)
//do stuff
}
だから、あなたはあなたのLogin
ハンドラに送信し、これはランダムなキーを生成し、そして、自分のカレンダーにアクセスするためにそれらがログインしていて、あなたを許可するためにGoogleに(およびユーザー)を送信しますあなたにリダイレクトされますAuth
ハンドラ。これにより、返されたstate
の鍵があなたが送った鍵と一致することを確認し、そうであればGoogleからトークンを取得します。それをセッションに保存します。クライアントを取得する場合は、セッションからトークンを取得し、それを使用して新しいクライアントを交換します。次に、このクライアントを使用してカレンダーサービスを作成します。
私はコードを正確にはチェックしていませんが、実際には基本的にこのコードを使用しているアプリケーションから最小限の例を作成しようとしています(インポートやタイプミス、 。
関連する問題
- 1. トークンのみを使用してGoogleカレンダーにログイン
- 2. `$ cordovaOauth`を使ってGoogleにログインしてGoogleカレンダーにアクセスするには?
- 3. Google ClassroomカレンダーはGoogleカレンダーAPIを使用していますか?
- 4. アンドロイドを使用してカレンダーAPIを使用してGoogleカレンダーに予定を追加する方法は?
- 5. GoogleのカレンダーにPHPを使用してイベントを追加する
- 6. caldavを使用してGoogleカレンダーにインポートする
- 7. omniauth-google-oauth2もGoogleカレンダーAPIからカレンダー情報を取得するために使用できますか?
- 8. GoogleカレンダーAPIを使用した問題
- 9. Zendライブラリを使用したGoogleカレンダーAPI
- 10. GoogleカレンダーAPIを使用してAndroidの特定のカレンダーにアクセスする
- 11. 同じ設定を使用して別のカレンダーにアクセスする - GoogleカレンダーAPI PHP
- 12. コードネーム1:Googleカレンダーを使用する
- 13. SwiftでGoogleカレンダーAPIを使用する
- 14. Googleログインは、ユーザーがログインするたびに同じアカウントを使用します。
- 15. Google Goのゴルーチンを使用してベイズネットワークを作成する
- 16. Googleのapiを使用してGoogleカレンダーにアクセス
- 17. SSO:Azure ADにログインするためにoutlook.comアカウントを使用する
- 18. JavaScriptを使用してセカンダリGoogleカレンダーを削除する方法
- 19. ユーザーがログインしなくてもGoogle APIを使用して公開カレンダーにアクセスする
- 20. Goで$ indexOfArrayを使用するには?
- 21. JavaScriptを使用してGoogleカレンダーの予定を更新するには
- 22. ASP.NETを使用してGoogleイベント[Googleカレンダー]を削除して更新する
- 23. Python:Seleniumでログインするためにクッキーを使用する
- 24. 私のアプリケーションにログインするためにGoogleログイン情報を使用する方法
- 25. Google+ログインC#を使用したWinform
- 26. JavaScriptを使用したGoogleのログイン(ウェブサイト)
- 27. OAuth2ClientAuthenticationProcessingFilterを使用した春のブートによるGoogle Oauth2ログイン
- 28. "LinkedInでログインする"を使用してチャットアプリケーションにログインする
- 29. Goは自分自身を解析するためにGoを使用しますか?
- 30. FlexがOAuthなしでGoogle APIを使用して公開カレンダーにアクセスする