首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Golang 2 facebook错误代码2500 (不能指定空标识符)

Golang 2 facebook错误代码2500 (不能指定空标识符)
EN

Stack Overflow用户
提问于 2018-01-03 13:04:57
回答 1查看 578关注 0票数 0

我为这个错误挣扎了好几天。下面是我获得令牌所遵循的步骤。

  1. 使用facebook登录客户端
  2. 将短暂的令牌传递给服务器
  3. 得到长寿的令牌

这是错误

代码语言:javascript
运行
复制
{"error":{"message":"Cannot specify an empty identifier","type":"OAuthException","code":2500,"fbtrace_id":"BIEldWBZras"}}

客户应该直接认证吗?看起来oauth身份验证是由于错误代码2500而没有建立的。我也不明白错误“不能指定空标识符”中的这句话,这是目前为止的代码:

代码语言:javascript
运行
复制
func handleExtendFacebookToken(w http.ResponseWriter, r *http.Request)  {
w.Header().Add("Access-Control-Allow-Origin", "*")

shortLivedToken := r.FormValue("token")

tokenExpiration := time.Now().Local()

resp, err := http.Get("https://graph.facebook.com/oauth/access_token?client_id=" + oauthConf.ClientID + "&client_secret=" + oauthConf.ClientSecret +  "&grant_type=fb_exchange_token&fb_exchange_token=" +
    url.QueryEscape(shortLivedToken))
if err != nil {
    fmt.Printf("Get: %s\n", err)
    return
}
defer resp.Body.Close()

response, err := ioutil.ReadAll(resp.Body)

if err != nil {
    return
}

var token FacebookToken;

//fmt.Print("response ",string(response))

err = json.Unmarshal(response, &token)

if err != nil {
    log.Fatal("error" + err.Error())
    return
}


//fmt.Println("duration ", token.AccessToken)

tokenExpiration = tokenExpiration.Add(time.Duration(token.Expiry) * time.Second)

fmt.Println(tokenExpiration)

/*resp, err = http.Get("https://graph.facebook.com/me?id&access_token=" +
    url.QueryEscape(token.AccessToken))
if err != nil {
    fmt.Printf("Get: %s\n", err)
    return
}
defer resp.Body.Close()

response, err = ioutil.ReadAll(resp.Body)
if err != nil {
    fmt.Printf("ReadAll: %s\n", err)
    return
}


//fmt.Println(string(response))
token.userId = string(response)*/

token.Expire_Date = tokenExpiration
token.AccessToken = strings.TrimSpace(token.AccessToken)
res, err := oauthConf.Client(oauth2.NoContext, token.convertFacebookToken()).Get("https://graph.facebook.com/me?id")

if err != nil {
    fmt.Printf("ReadAll: %s\n", err)
    return
}

defer res.Body.Close()

response, err = ioutil.ReadAll(res.Body)
if err != nil {
    fmt.Printf("ReadAll: %s\n", err)
    return
}

fmt.Println(string (response))
token.saveTokenToDB()
}
EN

回答 1

Stack Overflow用户

发布于 2018-01-03 14:05:44

错误发生在?id

代码语言:javascript
运行
复制
res, err := oauthConf.Client(oauth2.NoContext, token.convertFacebookToken()).Get("https://graph.facebook.com/me?id")

我试着像在facebook图表中那样使用它(它没有抛出任何错误)。我完全错了。它应该是:

代码语言:javascript
运行
复制
res, err := oauthConf.Client(oauth2.NoContext, token.convertFacebookToken()).Get("https://graph.facebook.com/me?fields=id")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48078002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档