Java / Android: получение информации о пользователе Facebook из Graph Api, отображение в TextView - PullRequest
3 голосов
/ 22 апреля 2011

Я пытаюсь изучать Java прямо сейчас, и я глубоко вник, начав с Android Faceobok API.Прямо сейчас я пытаюсь получить некоторую информацию из моих данных графика (в данном случае друга) и отобразить ее в текстовом представлении.Это кажется довольно тривиальным, но это было совсем не так.

JSONObject json_data = null;

    try
    {
        JSONObject response = Util.parseJson(facebook.request("/me/friends", mBundle, "GET")); // Get a friend information from facebook
        JSONArray jArray = response.getJSONArray("data");

        json_data = jArray.getJSONObject(0);
        String name = json_data.getString("name");
        mText.setText(name);

    }
    catch (MalformedURLException e)
    {
        e.printStackTrace();
    }
    catch (JSONException e)
    {
        e.printStackTrace();
    }
    catch (IOException e)
    {
        e.printStackTrace();
    }
    catch (FacebookError e)
    {
        e.printStackTrace();
    }

TextView не меняется, когда я это делаю, и я не совсем уверен, где я ошибся.

Кроме того, существует нехватка хороших учебных пособий по Android Facebook API.Большинство из них сотни строк кода;У меня нет энергии или терпения, чтобы потреблять все это.

Ответы [ 4 ]

3 голосов
/ 22 апреля 2011

Я чувствую, что ваш первоначальный запрос не работает должным образом. вы должны попробовать эту строку вместо:

JSONObject response = Util.parseJson(facebook.request("me/friends"));

Во-первых, я думаю, что в вашем первоначальном запросе это должно быть "me/friends", а не "/me/friends". Во-вторых, вам не обязательно нужны параметры mBundle или "GET", которых вы пытаетесь достичь. Вы даже определили параметры в mBundle? Вы также получаете информацию из метода запроса, поэтому параметр "GET" не требуется.

Попробуйте строку, которую я только что написал, так как она более проста и даст информацию о ваших друзьях. Остальная часть вашего кода в порядке.

2 голосов
/ 22 апреля 2011

Обновление: вот весь мой код:

    public class FriendsActivity extends Activity {
    /** Called when the activity is first created. */
    Facebook facebook = new Facebook("194653157245506");

    TextView mText;
    Bundle mBundle;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

mText = (TextView) this.findViewById(R.id.text);

        facebook.authorize(this, new String[] {"offline_access", "user_interests", "friends_interests"},

                new DialogListener() {
            @Override
            public void onComplete(Bundle values) {}

            @Override
            public void onFacebookError(FacebookError error) {}

            @Override
            public void onError(DialogError e) {}

            @Override
            public void onCancel() {}
        });

        JSONObject json_data = null;

        try
        {
            JSONObject response = Util.parseJson(facebook.request("/me/friends", mBundle, "GET")); // Get a friend information from facebook
            JSONArray jArray = response.getJSONArray("data");

            json_data = jArray.getJSONObject(0);
            String name = json_data.getString("name");
            Log.i("friend is", name);
            mText.setText(name);

        }
        catch (MalformedURLException e)
        {
            e.printStackTrace();
        }
        catch (JSONException e)
        {
            e.printStackTrace();
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
        catch (FacebookError e)
        {
            e.printStackTrace();
        }
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        facebook.authorizeCallback(requestCode, resultCode, data);
    }
}
2 голосов
/ 22 апреля 2011

Ваше утверждение о том, что он "тривиален", по существу верно, но, вообще говоря, "прыгнув в глубокий конец" редко приводит к чему-либо, кроме утопления.

Я собираюсь быть "тем парнем" и рекомендую вам на самом деле достичь общего понимания и минимальной компетенции в Java перед тем, как заняться чужим API.Как только вы узнаете, как работает Java - свойства, методы и события «PME» ... - изучение чьего-либо API-интерфейса становится просто вопросом выполнения правильных шагов.

Помимо этого небольшого PS, ответьте на следующие: 1) получил данные из вашего источника?2) какой поток вы вызываете это?3) любой из объектов нуль?4) какие-либо исключения, возникающие при просмотре в консоли или журнале (выводите их в журнал в сравнении с текущей реализацией)?

И не зря, но если у вас нет времени или терпениячтобы узнать «как и почему» разработчика API или программного обеспечения в целом, это будет долгое упражнение для вас, если работа когда-нибудь станет нетривиальной.

Мнение только одного человека, который также пытался выпитьот пожарного шланга до.

0 голосов
/ 22 апреля 2011

Я могу быть немного не в себе. но я сделал разработку API для Facebook в C #, и мне интересно, если у вас был логин клиента.

Facebook работает с OAuth, чтобы вы могли авторизоваться через них для клиента. (Даже ваша собственная учетная запись в качестве клиента), поэтому вам может потребоваться войти в систему.

Еще одна вещь, на которую стоит обратить внимание, есть ли у вас TextView, который находится в отображаемом действии ..

Попробуйте ввести точку останова и просмотреть код во время его выполнения, Debug View отлично подходит для этого.
проверьте, заполняется ли ваш ответ.
убедитесь, что у вас есть текст из упражнения.

mText = (TextView)findViewById(R.id.TextView1); //or whatever you named it.

Также LogCat должен показывать трассировку стека для любых ошибок, которые могут возникнуть, возможно, публикация некоторых выводов поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...