Android: используйте Glide для загрузки URL-адреса фотографии Facebook

Я создаю приложение для Android, в котором я пытаюсь позволить пользователю загружать фотографии из Facebook. После того, как я получаю URL-адреса из GraphRequest, я пытаюсь использовать Glide для загрузки изображения в ImageButton, но продолжаю получать сообщение об ошибке D/skia: --- skImageDecoder::Factory returned null. Вот мой код:

GraphRequest request = GraphRequest.newMeRequest(
        AccessToken.getCurrentAccessToken(),
        new GraphRequest.GraphJSONObjectCallback() {
            @Override
            public void onCompleted(JSONObject object, GraphResponse response) {
                try {
                    String url = object.getJSONObject("photos").getJSONArray("data").getJSONObject(0).getString("link");
                    Glide.with(UserSettingsActivity.this).load(url).into(userOne);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
Bundle parameters = new Bundle();
parameters.putString("fields","id,photos{link}");
request.setParameters(parameters);
request.executeAsync();

РЕДАКТИРОВАТЬ. Извините, я понял сразу после публикации, что на самом деле не задавал вопрос. Кто-нибудь знает, как правильно загружать фотографии с Facebook? Спасибо!


person Nick    schedule 13.07.2016    source источник
comment
Вы уверены, что получили законный URL? Зарегистрируйте URL-адрес перед загрузкой.   -  person VM4    schedule 13.07.2016
comment
Вот URL, который я получаю: https://www.facebook.com/photo.php?fbid={IDRemoved}&set=a.1376408195963079.1073741825.100007817343671&type=3   -  person Nick    schedule 13.07.2016


Ответы (1)


Я смог решить проблему, переключив photos{link} на photos{source}, который возвращает фактические исходные URL-адреса. Вот исправленный код:

GraphRequest request = GraphRequest.newMeRequest(
        AccessToken.getCurrentAccessToken(),
        new GraphRequest.GraphJSONObjectCallback() {
            @Override
            public void onCompleted(JSONObject object, GraphResponse response) {
                try {
                    String url = object.getJSONObject("photos").getJSONArray("data").getJSONObject(0).getString("source");
                    Glide.with(UserSettingsActivity.this).load(url).into(userOne);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
Bundle parameters = new Bundle();
parameters.putString("fields","id,photos{source}");
request.setParameters(parameters);
request.executeAsync();
person Nick    schedule 13.07.2016