团结facebook sdk使用www无法工作获取个人资料图片

时间:2014-12-17 11:42:50

标签: facebook unity3d unityscript facebook-unity-sdk

我想通过使用facebook sdk获取facebook个人资料照片

当我使用此代码时它工作正常但突然第二天网址没有下载。 网址下载完成后没有打印,显示没有错误。

private IEnumerator getProfilePicture()
{
    Debug.Log("Here  to get profile picture");

    WWW url = new WWW("https" + "://graph.facebook.com/" + FB.UserId + "/picture?type=square"); 

    yield return url;

    Debug.Log("url download completed");
    Texture2D textFb2 = new Texture2D(url.texture.width, url.texture.height, TextureFormat.ARGB32, false);

    Sprite sprite = Sprite.Create(url.texture, new Rect(0, 0, url.texture.width, url.texture.height), new Vector2(0.5f, 0.5f), 32);
    spriteToDisplay.GetComponent<SpriteRenderer>().sprite = sprite;
}

2 个答案:

答案 0 :(得分:1)

您发送给Facebook的请求导致302重定向到存储在Facebook的CDN中的图像。它不适合你的原因是Unity的WWW类从未正确支持302重定向。

它可能工作了一天左右,因为资源没有传播到CDN网络,但一旦它有了,你就再也无法下载了。

使用curl可以看到302:

$ curl https://graph.facebook.com/zuck/picture?type=square -I
HTTP/1.1 302 Found
Location: https://fbcdn-profile-a.akamaihd.net/hprofile-ak-xfa1/v/t1.0-1/c14.4.153.153/s50x50/1939620_10101266232851011_437577509_n.jpg?oh=6b6cd8460210e1de160cf8a6056df416&oe=550D5F6C&__gda__=1429858477_b29a956770b6173d71cb28eb35fa99e6
Facebook-API-Version: v1.0
Content-Type: image/jpeg
Pragma: no-cache
Access-Control-Allow-Origin: *
X-FB-Rev: 1534884
Cache-Control: private, no-cache, no-store, must-revalidate
Expires: Sat, 01 Jan 2000 00:00:00 GMT
X-FB-Debug: 3+McQVKq40Qa/6hLThwOwQTXP5dpENQqA5FvbX3elTkVxKsEw6ISvJG0eh0V5wVTUjC4fkmuZ1coTCDm2rLTZg==
Date: Wed, 17 Dec 2014 13:33:13 GMT
Connection: keep-alive
Content-Length: 0

一个建议是使用可以处理302的Uniweb库。

或者自己处理302,提取位置响应标头并发送另一个WWW请求。 (但并非所有平台都提供响应标头)。

答案 1 :(得分:0)

最后经过几天的努力,我找到了答案,而我得到的东西有点奇怪......

当我使用相同的代码而不更改任何东西,没有检查任何东西并运行到Android设备它工作正常,

它只有一个预先要求我的手机应该连接到数据包数据不是wi-fi ......

有一点需要注意的是,对Wi-Fi网络没有任何限制,我可以通过Wi-Fi网络使用Facebook ...加上得分,名称和其他东西正在使用wi-fi .....只有当我想要描绘要下载的图片时,我必须通过分组数据连接我的手机