Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine GOLANG HTTP基本身份验证与谷歌应用程序引擎URLFetch_Google App Engine_Go - Fatal编程技术网

Google app engine GOLANG HTTP基本身份验证与谷歌应用程序引擎URLFetch

Google app engine GOLANG HTTP基本身份验证与谷歌应用程序引擎URLFetch,google-app-engine,go,Google App Engine,Go,如何使用Go将授权头添加到urlfetch客户端 对于java和python,回答了一个类似的问题,但不是Gourlfetch.Client(ctx)返回HTTP客户端() http.Client具有用于Get、Post等的方法。。。它还有Do,您可以提交任意请求。使用http.NewRequest创建请求: req, err := http.NewRequest("GET", "http://www.google.com", nil) 然后可以添加如下标题: req.Header.Set("

如何使用Go将
授权
头添加到
urlfetch
客户端

对于
java
python
,回答了一个类似的问题,但不是
Go

urlfetch.Client(ctx)
返回HTTP客户端()

http.Client
具有用于
Get
Post
等的方法。。。它还有
Do
,您可以提交任意请求。使用http.NewRequest创建请求:

req, err := http.NewRequest("GET", "http://www.google.com", nil)
然后可以添加如下标题:

req.Header.Set("Authorization", "whatever")
并调用
Do

res, err := client.Do(req)
urlfetch.Client(ctx)
返回HTTP客户端()

http.Client
具有用于
Get
Post
等的方法。。。它还有
Do
,您可以提交任意请求。使用http.NewRequest创建请求:

req, err := http.NewRequest("GET", "http://www.google.com", nil)
然后可以添加如下标题:

req.Header.Set("Authorization", "whatever")
并调用
Do

res, err := client.Do(req)

我是新手,请原谅我的代码太难看/格式不正确/完全错了

我一直在努力解决这个问题,在appengine上遇到了同样的问题

@卡莱布上面的回答帮了大忙。我刚刚添加了一些细节,以帮助可能遇到类似问题的人

下面是我的导入语句的样子:

Import {
    "appengine"
    "appengine/urlfetch"
    "bytes"
    "encoding/json"
    "fmt"
    "golang.org/x/oauth2"
    "io/ioutil"
    "net/http"
    "net/url"
}
这是一个函数,用于接收和传入的身份验证回调请求,然后使用来自身份验证服务器的访问令牌请求进行响应。在本例中,fitbit需要将身份验证头设置为“Basic”,并包含一些额外信息。我不知道如何使用股票Oauth2库来实现这一点,它似乎不容易允许更改请求头

正如您所看到的,我们可以查看传入请求(r)的上下文。从该上下文中,我们从urlfetch获取http.Client

然后我们打包并发回一个请求,其中包含一些授权信息

得到响应后,我们将结果打印到浏览器上

希望这有帮助

func authCallbackHandler(w http.ResponseWriter, r *http.Request) {

    data := url.Values{}
    data.Set("client_id", "231343")
    data.Add("grant_type", "authorization_code")
    data.Add("redirect_uri", "http://localhost:8080/callmebacklaterok")
    data.Add("code", "authcode123132")

    encodedData := data.Encode()

    c := appengine.NewContext(r)
    client := urlfetch.Client(c)

    urlStr := "https://api.fitbit.com/oauth2/token"
    req, _ := http.NewRequest("POST", urlStr,bytes.NewBufferString(encodedData))
    req.Header.Add("Authorization", "Basic RmFuY3kgbWVldGluZyB5b3UgaGVyZSEg")
    resp, _ := client.Do(req)
    defer resp.Body.Close()

    fmt.Fprint(w, resp)

    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
       panic(err.Error())
    }

    var bodydata interface{} 
    err = json.Unmarshal(body, &bodydata)
    if err != nil {
        panic(err.Error())
    }
    fmt.Fprint(w, bodydata)

}

我是新手,请原谅我的代码太难看/格式不正确/完全错了

我一直在努力解决这个问题,在appengine上遇到了同样的问题

@卡莱布上面的回答帮了大忙。我刚刚添加了一些细节,以帮助可能遇到类似问题的人

下面是我的导入语句的样子:

Import {
    "appengine"
    "appengine/urlfetch"
    "bytes"
    "encoding/json"
    "fmt"
    "golang.org/x/oauth2"
    "io/ioutil"
    "net/http"
    "net/url"
}
这是一个函数,用于接收和传入的身份验证回调请求,然后使用来自身份验证服务器的访问令牌请求进行响应。在本例中,fitbit需要将身份验证头设置为“Basic”,并包含一些额外信息。我不知道如何使用股票Oauth2库来实现这一点,它似乎不容易允许更改请求头

正如您所看到的,我们可以查看传入请求(r)的上下文。从该上下文中,我们从urlfetch获取http.Client

然后我们打包并发回一个请求,其中包含一些授权信息

得到响应后,我们将结果打印到浏览器上

希望这有帮助

func authCallbackHandler(w http.ResponseWriter, r *http.Request) {

    data := url.Values{}
    data.Set("client_id", "231343")
    data.Add("grant_type", "authorization_code")
    data.Add("redirect_uri", "http://localhost:8080/callmebacklaterok")
    data.Add("code", "authcode123132")

    encodedData := data.Encode()

    c := appengine.NewContext(r)
    client := urlfetch.Client(c)

    urlStr := "https://api.fitbit.com/oauth2/token"
    req, _ := http.NewRequest("POST", urlStr,bytes.NewBufferString(encodedData))
    req.Header.Add("Authorization", "Basic RmFuY3kgbWVldGluZyB5b3UgaGVyZSEg")
    resp, _ := client.Do(req)
    defer resp.Body.Close()

    fmt.Fprint(w, resp)

    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
       panic(err.Error())
    }

    var bodydata interface{} 
    err = json.Unmarshal(body, &bodydata)
    if err != nil {
        panic(err.Error())
    }
    fmt.Fprint(w, bodydata)

}

我正在尝试向orientDBShow发出一个GET请求,以获取一些示例代码。Go的net/http包允许您添加自定义标题。耶稣基督戴夫,我知道它的Go,我知道它是搜索引擎的golang。WTF有什么问题吗?我正试图向orientDBShow发出一个GET请求,以获取一些示例代码。Go的net/http包允许您添加自定义标题。耶稣基督戴夫,我知道它的Go,我知道它是搜索引擎的golang。你怎么了?