我试图使用面向Unity 7.3.0的Facebook SDK从graph.facebook.com获取个人资料图片。我的Unity版本是5.3。
这是我的功能,
public static IEnumerator GetFBProfilePicture (){
WWW url = new WWW (System.Uri.EscapeUriString("https://graph.facebook.com/" + someUserID + "/picture?type=large"));
yield return url;
Debug.Log("Completed.");
Texture2D texture = new Texture2D (180, 180, TextureFormat.DXT1, false);
url.LoadImageIntoTexture (texture);
// ...
}
我将此功能称为
StartCoroutine (GetFBProfilePicture ());
在Unity Player和Android设备中都可以正常使用。但在iOS设备中,"已完成。"线没有显示出来。并且没有错误日志。它只是在网址中等待。
我尝试使用iOS 7和9以及无线连接和移动数据。问题仍然存在。
答案 0 :(得分:1)
我遇到了同样的问题,最后找到了解决方案(虽然不是理想的解决方案)。使用参数redirect = false发出请求似乎可以解决问题,但是它只返回图像的url,而不是图像本身。因此,您必须对图像进行第二次请求。 以下代码概述了解决方案:
//passed in URL looks like https://graph.facebook.com/some_id/picture?type=large
IEnumerator GetDownloadURL(string url, float pixelsPerUnit = 100.0f ) {
url = url + "&redirect=false";
WWW www = new WWW(url);
yield return www;
Dictionary<string,object> dict = fastJSON.JSON.Parse(www.text) as Dictionary<string,object>;
Dictionary<string,object> dataDict = dict["data"] as Dictionary<string,object>;
DownloadImage(dataDict["url"])
}
IEnumerator DownloadImage(string url ) {
WWW www = new WWW(url);
yield return www;
Texture2D texture = newDownload.www.texture;
///...
}
推荐解决方案的已知问题:https://developers.facebook.com/x/bugs/364606280347510/
答案 1 :(得分:0)
我使用它,它可以工作,试试
IEnumerator getPicture(string url, SpriteRenderer spritex) {
WWW www = new WWW (url);
yield return www;
Sprite sprite = new Sprite ();
sprite = Sprite.Create (www.texture, new Rect (0, 0, 50, 50), new Vector2 (0.5f, 0.5f), 100.0f);
spritex.sprite = sprite;
www.LoadImageIntoTexture (spritex.sprite.texture);
}
事情是创建一个新的精灵,不知道为什么,但它的工作原理