无法在 Unity Facebook SDK 中使用 www 获取 Facebook 个人资料图片

Cannot Get Facebook Profile Picture Using www in Unity Facebook SDK

我正在尝试使用适用于 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 设备中,"Completed." 行不会出现。而且没有错误日志。它只是一直在 url 行中等待。

我尝试使用 iOS 7 和 9 无线连接和移动数据。问题仍然存在。

我用过,效果不错,试试看

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);
}

事情是创建一个新的精灵,不知道为什么,但它是这样工作的

我刚遇到同样的问题,终于找到了解决方案(尽管不是理想的解决方案)。使用参数 redirect=false 发出请求似乎可以解决问题,但它只是 returns 图像的 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/