import (
"context"
+ "crypto/hmac"
+ "crypto/sha1"
+ "encoding/hex"
"fmt"
"net/http"
"sync"
var tok oauth2.Token
if err := datastore.Get(ctx, key, &tok); err != nil {
- return nil, err
+ return nil, fmt.Errorf("datastore.Get(%v) = %v", key, err)
}
src := cfg.TokenSource(ctx, &tok)
return u.Email
}
+func (u *User) Sign(payload string) string {
+ mac := hmac.New(sha1.New, []byte(u.ID))
+ mac.Write([]byte(payload))
+
+ return hex.EncodeToString(mac.Sum(nil))
+}
+
type persistingTokenSource struct {
ctx context.Context
t *oauth2.Token