예제 #1
0
func GetOauthToken(uid int, clientID string) (oauthToken string, err error) {
	token, err := dao.QueryTokenByUidClientID(uid, clientID)
	if err != nil && err != pgpub.ErrNotExist {
		return
	}

	if err != pgpub.ErrNotExist && time.Now().Unix() > token.Expires {
		err = dao.DeleteToken(token.OauthToken)
		if err != nil {
			return
		}
	}

	oauthToken = token.OauthToken

	if err == pgpub.ErrNotExist || time.Now().Unix() > token.Expires {
		newToken := dao.PGToken{
			OauthToken: genOauthToken(uid),
			ClientId:   clientID,
			Expires:    time.Now().Add(7 * 24 * time.Hour).Unix(),
			Uid:        uid,
		}

		err = dao.CreateToken(&newToken)
		if err != nil {
			return
		}

		oauthToken = newToken.OauthToken
	}

	return
}
예제 #2
0
func RefreshOauthToken(uid int, clientID string, oldOauthToken string) (oauthToken string, err error) {
	token, err := dao.QueryToken(oldOauthToken)
	if err != nil {
		return
	}

	if token.OauthToken == "" {
		err = fmt.Errorf("%v not exists", oldOauthToken)
		return
	}

	err = dao.DeleteToken(token.OauthToken)
	if err != nil {
		return
	}

	return GetOauthToken(uid, clientID)
}