facebook - 使用huandu/facebook Golang FB api时出现DecodeField错误

标签 facebook facebook-graph-api go

我试图通过使用 huandu/facebook Golang FB api 在批处理请求后使用 Result.DecodeField 提取 FB 用户信息、提要等。以下是批量处理单个请求的简化版本。

我被这个堵了一整天。非常感谢您能帮忙检查一下这个问题!

代码:

type User struct {
    Id    string `json:"id" facebook:"id"`
    Name  string `json:"name" facebook:"name"`
}

func batchRequests() {

    paramsId := fb.Params{
        "method":       fb.GET,
        "relative_url": "me",
    }

    results, errBatch := pSession.BatchApi(paramsId)
    if errBatch != nil {
        fmt.Println("Batch api error:", errBatch.Error())
        return
    }

    fmt.Println("Results[0]:", results[0])

    var user User
    if err := results[0].DecodeField("body", &user); err != nil {
        fmt.Println("Decode user err:", err.Error())
    } else {
        fmt.Println("user", res0)
    }

    return 
}

调试消息:

结果[0]: map[code:200 headers:[map[name:Last-Modified value:2014-05-26T02:20:09+0000] map[name:Facebook-API-Version value:v2. 0] map[name:ETag value:"53abd9d236bfbd61662d1139e66983f8d0220d1e"] map[name:Content-Type value:text/javascript; charset=UTF-8] map[name:Pragma value:no-cache] map[name:Access-Control-Allow-Origin value:*] map[name:Cache-Control value:private, no-cache, no-store , must-revalidate] map[name:Expires value:Sat, 01 Jan 2000 00:00:00 GMT]] body:{"id":"10152276269XXXXXX","first_name":"XXXX","gender":"男","last_name":"XXXX","链接":"https://www.facebook.com/app_scoped_user_id/1015227626XXXXXX/","locale":"zh_TW","name":"XXXXXX", "timezone":8,"updated_time":"2014-05-26T02:20:09+0000","verified":true}]

解码用户错误:字段 'body' 不是结果中的 json 对象。

最佳答案

图书馆文件具有误导性。 Facebook 总是在批处理 api 响应中返回一个“正文”字段作为字符串。所以“body”不能直接解码为用户结构。

我只是添加了一个new BatchResult struct在库中存储解析的批处理 api 响应。下面是使用这个新结构解码 User 的示例。

// error handling code is omitted.
batchResult, _ := results[0].Batch()

var user User
batchResult.Result.Decode(&user)
fmt.Println("decode user", user)

关于facebook - 使用huandu/facebook Golang FB api时出现DecodeField错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25000237/

相关文章:

java - 我的 ImageView 有一些错误有人知道吗?

Android 以葡萄牙语登录,但语言环境设置为英语

java - Facebook 图形 API : get comments by given user

dns - Go中从IP地址获取域名

go - 如何使用json marshal获取 map 值

go - 找不到 uri [<index>/_doc/<document_id>/_update] 和方法 [POST] 的处理程序

Android facebook检测首次登录

algorithm - Facebook 是如何确定 "Suggested Friends"的?

javascript - 我可以在 Javascript 中使用冒号作为变量名吗?

facebook-graph-api - 关于 Facebook Places 的 Graph API