2016-01-20 2 views
1

Я пытаюсь получить изображение профиля с графика.facebook.com с помощью Facebook SDK для Unity 7.3.0. Версия моего единства - 5.3.Невозможно получить изображение в Facebook Профиль с помощью www in Unity Facebook SDK

Это моя функция,

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-плеер, а также в Android устройств. Но в устройствах iOS «Completed». строка не отображается. И нет журнала ошибок. Он просто продолжает ждать в строке URL.

Я пробовал его с iOS 7 и 9 с беспроводным соединением и мобильными данными. Проблема все еще возникает.

ответ

0

Я просто имел такую ​​же проблему, и, наконец, нашел решение (хотя и не идеальное). Выполнение запроса с параметром 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/

+0

Это решает проблему. Благодарю. –

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

вещь, чтобы создать новый спрайт, не знаю почему, но это работает, как этот

+0

На самом деле моя проблема, я не могу выбрать данные в URL. Заявление Debug.Log не отображается в консоли. Мой код также работает в устройствах Unity и Android. Моя проблема связана с iOS. –

+0

, если инструкция debug не показывает, что это означает, что www не подключается, вы проверили подключение к Интернету на устройстве ios? У меня такая же проблема, что данные не могут быть установлены в один и тот же спрайт в ios из-за того, что ram указывая ... так что мне нужно было создать еще один ... –

Смежные вопросы