• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Golang oauth.Client类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Golang中github.com/garyburd/go-oauth/oauth.Client的典型用法代码示例。如果您正苦于以下问题:Golang Client类的具体用法?Golang Client怎么用?Golang Client使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



在下文中一共展示了Client类的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。

示例1: handleOAuthCallback

func handleOAuthCallback(oauthClient *oauth.Client, s sessions.Session, w http.ResponseWriter, r *http.Request) {
	nextURL := getNextURL(r)

	tempToken, err := unmarshalCredentials(s, keyTempToken)
	if err != nil {
		// missing temp token
		params := url.Values{}
		params.Add(KeyNextURL, nextURL)
		http.Redirect(w, r, PathLogin+"?"+params.Encode(), codeRedirect)
		return
	}

	if tempToken.Token != r.FormValue("oauth_token") {
		// TODO: add error handling
		log.Fatal("oauth token mismatch")
	}

	token, _, err := oauthClient.RequestToken(http.DefaultClient, tempToken, r.FormValue("oauth_verifier"))
	if err != nil {
		// TODO: add error handling
		log.Fatal("oauth-callback error:", err)
		// http.Redirect(w, r, PathError, codeRedirect)
		return
	}

	// Store the credentials in the session.
	marshalCredentials(token, s, keyToken)
	http.Redirect(w, r, nextURL, codeRedirect)
}
开发者ID:jonthornton,项目名称:martini-contrib-oauth1,代码行数:29,代码来源:oauth1.go


示例2: multipartPost

// Post issues a POST with the specified form.
func multipartPost(c *oauth.Client, client *http.Client,
	credentials *oauth.Credentials, urlStr string, form url.Values,
	files map[string]struct {
		filename string
		r        io.Reader
	}) (*http.Response, error) {
	var bf = &bytes.Buffer{}
	mw := multipart.NewWriter(bf)
	contentType := mw.FormDataContentType()
	for k := range form {
		mw.WriteField(k, form.Get(k))
	}

	for field, entry := range files {
		w, err := mw.CreateFormFile(field, filepath.Base(entry.filename))
		if err != nil {
			return nil, err
		}

		_, err = io.Copy(w, entry.r)
		if err != nil {
			return nil, err
		}
	}
	mw.Close()

	req, err := http.NewRequest("POST", urlStr, bf)
	if err != nil {
		return nil, err
	}
	req.Header.Set("Content-Type", contentType)

	req.Header.Set("Authorization", c.AuthorizationHeader(credentials, "POST", req.URL, nil))
	return client.Do(req)
}
开发者ID:vincentshi,项目名称:go-ynote,代码行数:36,代码来源:ynote.go


示例3: ExampleClient_AuthorizationHeader

// This example shows how to sign a request when the URL Opaque field is used.
// See the note at http://golang.org/pkg/net/url/#URL for information on the
// use of the URL Opaque field.
func ExampleClient_AuthorizationHeader(client *oauth.Client, credentials *oauth.Credentials) error {
	form := url.Values{"maxResults": {"100"}}

	// The last element of path contains a "/".
	path := "/document/encoding%2gizp"

	// Create the request with the temporary path "/".
	req, err := http.NewRequest("GET", "http://api.example.com/", strings.NewReader(form.Encode()))
	if err != nil {
		return err
	}

	// Overwrite the temporary path with the actual request path.
	req.URL.Opaque = path

	// Sign the request.
	req.Header.Set("Authorization", client.AuthorizationHeader(credentials, "GET", req.URL, form))

	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")

	resp, err := http.DefaultClient.Do(req)
	if err != nil {
		return err
	}
	defer resp.Body.Close()
	// process the response
	return nil
}
开发者ID:nancyandrews,项目名称:MobileMainStreet,代码行数:31,代码来源:examples_test.go


示例4: signQuery

func (bs *BossSearch) signQuery(url string, values *url.Values) {
	cred := oauth.Credentials{}
	cred.Token = bs.Token
	cred.Secret = bs.Secret

	client := oauth.Client{}
	client.SignatureMethod = oauth.HMACSHA1
	client.Credentials = cred

	client.SignForm(nil, "GET", url, *values)
}
开发者ID:ThunApps,项目名称:YahooBoss,代码行数:11,代码来源:yahooboss.go


示例5: NewOAuth1Encoder

func NewOAuth1Encoder(config OAuthConfig) HeaderEncoder {
	var client oauth.Client = oauth.Client{Credentials: config.Consumer}
	var token oauth.Credentials = config.Token
	return func(r *rpc.Request, v interface{}, req *http.Request) error {
		var signUrl url.URL = *req.URL
		var params = signUrl.Query()
		// OAuth library appends the full set of signed params to the signing url.
		signUrl.RawQuery = ""
		client.SignParam(&token, req.Method, signUrl.String(), params)

		req.URL.RawQuery = params.Encode()
		return nil
	}
}
开发者ID:areusch,项目名称:httpcodec,代码行数:14,代码来源:oauth.go


示例6: post

func post(client *oauth.Client, cred *oauth.Credentials, s string) {
	param := make(url.Values)
	param.Set("status", s)
	uri := "https://api.twitter.com/1.1/statuses/update.json"
	client.SignParam(cred, "POST", uri, param)
	res, err := http.PostForm(uri, url.Values(param))
	if err != nil {
		log.Println("failed to post tweet:", err)
		return
	}
	defer res.Body.Close()
	if res.StatusCode != 200 {
		log.Println("failed to get timeline:", err)
		return
	}
}
开发者ID:mattn,项目名称:go-gtk,代码行数:16,代码来源:twitterstream.go


示例7: show

func show(client *oauth.Client, cred *oauth.Credentials, f func(t *tweet)) {
	param := make(url.Values)
	uri := "https://api.twitter.com/1.1/statuses/home_timeline.json"
	client.SignParam(cred, "GET", uri, param)
	uri = uri + "?" + param.Encode()
	res, err := http.Get(uri)
	if err != nil {
		return
	}
	defer res.Body.Close()
	if res.StatusCode != 200 {
		return
	}
	var tweets []tweet
	json.NewDecoder(res.Body).Decode(&tweets)
	for _, t := range tweets {
		f(&t)
	}
}
开发者ID:mattn,项目名称:go-gtk,代码行数:19,代码来源:twitterstream.go


示例8: stream

func stream(client *oauth.Client, cred *oauth.Credentials, f func(*tweet)) {
	param := make(url.Values)
	uri := "https://userstream.twitter.com/1.1/user.json"
	client.SignParam(cred, "GET", uri, param)
	uri = uri + "?" + param.Encode()
	res, err := http.Get(uri)
	if err != nil {
		log.Fatal("failed to get tweets:", err)
	}
	defer res.Body.Close()
	if res.StatusCode != 200 {
		log.Fatal("failed to get tweets:", err)
	}
	var buf *bufio.Reader
	if res.Header.Get("Content-Encoding") == "gzip" {
		gr, err := gzip.NewReader(res.Body)
		if err != nil {
			log.Fatal("failed to make gzip decoder:", err)
		}
		buf = bufio.NewReader(gr)
	} else {
		buf = bufio.NewReader(res.Body)
	}
	var last []byte
	for alive {
		b, _, err := buf.ReadLine()
		last = append(last, b...)
		var t tweet
		err = json.Unmarshal(last, &t)
		if err != nil {
			continue
		}
		last = []byte{}
		if t.Text == "" {
			continue
		}
		f(&t)
	}
}
开发者ID:mattn,项目名称:go-gtk,代码行数:39,代码来源:twitterstream.go


示例9: getTweets

func getTweets(username string, count string, consumer oauth.Credentials, access oauth.Credentials) (tweets []Tweet, err error) {
	// Pull a X number of tweets associated with a user.
	// Docs: https://dev.twitter.com/rest/reference/get/statuses/user_timeline
	client := oauth.Client{Credentials: consumer}
	params := url.Values{"screen_name": {username}, "count": {count}}
	resp, err := client.Get(
		http.DefaultClient,
		&access,
		"https://api.twitter.com/1.1/statuses/user_timeline.json",
		params)
	if err != nil {
		return nil, err
	}
	defer resp.Body.Close()
	body, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		return nil, err
	}
	err = json.Unmarshal(body, &tweets)
	if err != nil {
		return nil, err
	}
	return tweets, nil
}
开发者ID:cameronmaske,项目名称:go-tweet-yourself,代码行数:24,代码来源:twitter.go


示例10: Token

// You get a token for your App from Twitter.  Put this within the App section
// of the  JSON token file.  The user's token will be requested, then written
// and saved to this file.
func (t *ClientTokens) Token(oc *oauth.Client) (*oauth.Credentials, error) {
	if t.TokenFile == "" {
		return nil, &ClientTokensError{
			Msg: "no token file supplied",
		}
	}

	cf, err := ioutil.ReadFile(t.TokenFile)
	if err != nil {
		return nil, err
	}
	if err := json.Unmarshal(cf, t); err != nil {
		return nil, err
	}

	if t.App == nil {
		return nil, &ClientTokensError{
			Msg: "missing \"App\" token",
		}
	}

	if t.App.Token == "" || t.App.Secret == "" {
		return nil, &ClientTokensError{
			Msg: "missing app's Token or Secret",
		}
	}
	oc.Credentials = *t.App

	var token *oauth.Credentials
	if t.User == nil {
		token = &oauth.Credentials{}
	} else {
		token = t.User
	}

	if token.Token == "" || token.Secret == "" {
		tempCredentials, err := oc.RequestTemporaryCredentials(http.DefaultClient, "oob", nil)
		if err != nil {
			return nil, err
		}

		url := oc.AuthorizationURL(tempCredentials, nil)
		fmt.Fprintf(os.Stdout, "Before we can continue ...\nGo to:\n\n\t%s\n\nAuthorize the application and enter in the verification code: ", url)

		var authCode string
		fmt.Scanln(&authCode)

		token, _, err = oc.RequestToken(http.DefaultClient, tempCredentials, authCode)
		if err != nil {
			return nil, err
		}

		// Save the user token within our token file
		t.User = token
		save, err := json.Marshal(t)
		if err != nil {
			return nil, err
		}

		if err := ioutil.WriteFile(t.TokenFile, save, tokenFilePermission); err != nil {
			return nil, err
		}
	}

	return token, nil
}
开发者ID:JustAdam,项目名称:streamingtwitter,代码行数:69,代码来源:tokens.go


示例11: Open

// Open opens a new stream.
func Open(oauthClient *oauth.Client, accessToken *oauth.Credentials, urlStr string, params url.Values) (*Stream, error) {
	ts := new(Stream)

	u, err := url.Parse(urlStr)
	if err != nil {
		return nil, err
	}

	addr := u.Host
	if strings.LastIndex(addr, ":") <= strings.LastIndex(addr, "]") {
		if u.Scheme == "http" {
			addr = addr + ":80"
		} else {
			addr = addr + ":443"
		}
	}

	if u.Scheme == "http" {
		ts.conn, err = net.Dial("tcp", addr)
		if err != nil {
			return nil, err
		}
	} else {
		ts.conn, err = tls.Dial("tcp", addr, nil)
		if err != nil {
			return nil, err
		}
		if err = ts.conn.(*tls.Conn).VerifyHostname(addr[:strings.LastIndex(addr, ":")]); err != nil {
			return nil, ts.fatal(err)
		}
	}

	// Setup request body.
	pcopy := url.Values{}
	for key, values := range params {
		pcopy[key] = values
	}
	oauthClient.SignParam(accessToken, "POST", urlStr, pcopy)
	body := pcopy.Encode()

	var req bytes.Buffer
	req.WriteString("POST ")
	req.WriteString(u.RequestURI())
	req.WriteString(" HTTP/1.1")
	req.WriteString("\r\nHost: ")
	req.WriteString(u.Host)
	req.WriteString("\r\nContent-Type: application/x-www-form-urlencoded")
	req.WriteString("\r\nContent-Length: ")
	req.WriteString(strconv.Itoa(len(body)))
	req.WriteString("\r\n\r\n")
	req.WriteString(body)
	_, err = ts.conn.Write(req.Bytes())
	if err != nil {
		return nil, ts.fatal(err)
	}

	// Must connect in 60 seconds.
	err = ts.conn.SetReadDeadline(time.Now().Add(60 * time.Second))
	if err != nil {
		return nil, ts.fatal(err)
	}

	ts.r = bufio.NewReaderSize(ts.conn, 8192)
	p, err := ts.r.ReadSlice('\n')
	if err != nil {
		return nil, ts.fatal(err)
	}

	m := responseLineRegexp.FindSubmatch(p)
	if m == nil {
		return nil, ts.fatal(errors.New("twitterstream: bad http response line"))
	}

	// Skip headers
	for {
		p, err = ts.r.ReadSlice('\n')
		if err != nil {
			return nil, ts.fatal(err)
		}
		if len(p) <= 2 {
			break
		}
	}

	statusCode, _ := strconv.Atoi(string(m[1]))
	if statusCode != 200 {
		p, _ := ioutil.ReadAll(ts.r)
		return nil, HTTPStatusError{statusCode, string(p)}
	}

	ts.chunkState = stateStart
	return ts, nil
}
开发者ID:mattn,项目名称:twitterstream,代码行数:94,代码来源:stream.go



注:本文中的github.com/garyburd/go-oauth/oauth.Client类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Golang oauth.Credentials类代码示例发布时间:2022-05-23
下一篇:
Golang mongo.Database类代码示例发布时间:2022-05-23
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap