无法在 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/
我正在尝试使用适用于 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/