如题,有人知道如何获取用户头像不?
有人知道吗?如何获取用户头像呢?
这个问题你得到英文论坛去问SDKBOX团队。SDKBOX团队在美国,他们不光顾中文论坛的。
我刚才到SDKBOX的Facebook API Reference 里面快速扫了一眼,你要的头像信息可能在
void onGetUserInfo ( const FBGraphUser & userInfo );
回调里面,我猜测就在 FBGraphUser 结构体里应该有。
主要是调用语法不清楚http://www.cocos.com/doc/article/index?type=cocos2d-x&url=/doc/cocos-docs-master/manual/framework/html5/facebook-sdk/api-reference/api_zh.md 这个有说,但是对于第一个参数path,没说清楚怎么用,只能自己瞎摸,很耗时间

看看是不是FBGraphUser里的这个属性,一个url
不是这个啊,应该是Picture,但是我无法取得用户信息,应该是可以通过getApi这个方法去获取得到的,但是不知道第一个参数path要如何使用~
一个使用 Graph API 获取用户头像的例子:
sdkbox::FBAPIParam params;
params["redirect"] = "false"; // 返回头像链接的 json 数据,而不是 image 的二进制流
params["type"] = "small"; // 图片大小
std::string url("110072729339756/picture"); // 用户 ID/picture
PluginFacebook::api(url, "GET", params, "__call_id__");
结果输出:
{"data":{"url":"https:\/\/scontent.xx.fbcdn.net\/v\/t1.0-1\/p50x50\/1004083_105444133135949_7660066993930020296_n.jpg?oh=5cc4a49fb018de22c8795d3ff6254aa6&oe=57AA855E","is_silhouette":false},"api":"110072729339756\/picture","__debug__":{}}
使用 https://github.com/kazuho/picojson 解析数据,回调函数贴出:
void HelloWorld::onAPI(const std::string& tag, const std::string& jsonData)
{
CCLOG("##FB onAPI: tag -> %s, json -> %s", tag.c_str(), jsonData.c_str());
if (tag == "__my_picture__") {
picojson::value v;
picojson::parse(v, jsonData);
std::string url = v.get("data").get("url").to_str();
CCLOG("picture's url = %s", url.data());
network::HttpRequest* request = new network::HttpRequest();
request->setUrl(url.data());
request->setRequestType(network::HttpRequest::Type::GET);
request->setResponseCallback([](network::HttpClient* client, network::HttpResponse* response) {
CCLOG("success=%s", response->isSucceed() ? "yes":"no");
std::vector<char> *buffer = response->getResponseData();
Image img;
img.initWithImageData(reinterpret_cast<unsigned char*>(&(buffer->front())), buffer->size());
Sprite *spr = NULL;
if (1)
{
// save image file to device.
std::string path = FileUtils::getInstance()->getWritablePath()+"p.png";
CCLOG("save image path = %s", path.data());
bool ret = img.saveToFile(path);
CCLOG("save file %s", ret ? "success" : "failure");
spr = Sprite::create(path);
} else {
// create sprite with texture
Texture2D *texture = new Texture2D();
texture->autorelease();
texture->initWithImage(&img);
spr = Sprite::createWithTexture(texture);
}
if (spr) {
spr->setPosition(Director::getInstance()->getWinSize()/2);
Director::getInstance()->getRunningScene()->addChild(spr);
}
});
network::HttpClient::getInstance()->send(request);
request->release();
}
}
相关的资料: https://developers.facebook.com/docs/graph-api/reference/v2.2/user/picture
更新了 sample
https://github.com/sdkbox/sdkbox-sample-facebook/blob/master/cpp/Classes/HelloWorldScene.cpp#L403-L407
https://github.com/sdkbox/sdkbox-sample-facebook/blob/master/cpp/Classes/HelloWorldScene.cpp#L347
- 点击 fetch friends
- 游戏下方显示好友名字
- 点击好友名字,游戏正中央显示好友 icon
嗯嗯,这个解决了,感觉解答。
这个里面可以获取到头像,但是50*50的小尺寸。