Cocos 的facebook插件能获取得到用户头像不?

如题,有人知道如何获取用户头像不?

有人知道吗?如何获取用户头像呢?

这个问题你得到英文论坛去问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

  1. 点击 fetch friends
  2. 游戏下方显示好友名字
  3. 点击好友名字,游戏正中央显示好友 icon

嗯嗯,这个解决了,感觉解答。

这个里面可以获取到头像,但是50*50的小尺寸。