Android Facebook Открыть график? - PullRequest
1 голос
/ 01 апреля 2012

Мне любопытно, могу ли я получить некоторую помощь с Open Graph, так как я не могу понять, какой смысл имеет API-интерфейс Facebook, который я прочитал.

Сейчас я настроил приложение Open Graph на Facebook. Это было одобрено. Я пытаюсь передать свои "объекты" через параметры пакета, но мне любопытно, как я настраиваю объект параметров пакета, как показано ниже. Где myObject имеет несколько значений, связанных с ним.

Bundle params = new Bundle();
param.putString("myObject", ""); // My object has multiple values

Полагаю, мне действительно нужно выяснить, как вы отправляете что-то в Bundle, с которым связано несколько свойств. Если у кого-то есть понимание этого, пожалуйста, помогите мне.

Сначала я попробовал что-то подобное.

Bundle myObject = new Bundle();
myObject("property1", "property1Value");
myObject("property2", "property2Value");
myObject("property3", "property3Value");
Bundle params = new Bundle();
params.putString("myObject", myObject); 

Но, оглядываясь назад, я понял, почему это не сработает.

Редактировать 1

Может быть, это прольет свет Имейте в виду, что это действие Open Graph, которое не является частью Graph API.

//Build recipe
JSONObject recipe = new JSONObject();
recipe.put("type", "myappns:recipe");
recipe.put("recipe_name", "Thai Island");
recipe.put("cook_time", "1hr. 30min.");

//Build cookbook
JSONObject cookbookParams = new JSONObject();
cookbookParams.put("type", "myappns:book");
cookbookParams.put("title", "Hot & Spicy");
cookbookParams.put("description", "This book consists of hot & spicy foods");
cookbookParams.put("recipes", new JSONArray().put(recipe));


Bundle params = new Bundle();
params.putString("cookbook", cookbookParams.toString());
AsyncFacebookRunner request = new AsyncFacebookRunner(facebook);
request.request("me/myappns:used", params, "POST", new addToTimelineListener(), null);

Вот вопрос, хотя я больше копался в системе Open Graph. Я считаю, что мне нужно где-то настроить сайт, это правильно? Благодаря вводной документации Open Graph я поверил, что я могу создавать и использовать свое приложение Facebook на Android без использования какого-либо веб-сайта. То есть используйте систему Open Graph, я знаю, что могу использовать приложение для публикации каналов, а что нет, что я успешно сделал.

Еще раз спасибо!

Редактировать 2

Даже не беспокойтесь об ответе. Теперь я понимаю, в чем заключалась моя проблема ... У меня должен быть сайт где-то, где размещено приложение Facebook, чтобы посты тоже могли ссылаться. Имеет смысл, я не видел, где документация была очень прямой об этом ... о хорошо, теперь я знаю.

Ответы [ 2 ]

1 голос
/ 31 августа 2012

Чтобы увидеть полный пример, посмотрите пример списка желаний .

Включен полный пример для Android.Пакет включает в себя файлы, которые нужно загрузить на сервер, и файл readme, в котором объясняется, как настроить все элементы на панели открытого графика.

1 голос
/ 01 апреля 2012

Я использую этот код для публикации на стене для нескольких свойств объекта.

     private void publishPhoto(String imageURL) {
    Log.d("FACEBOOK", "Post to Facebook!");

    try {

        JSONObject attachment = new JSONObject();
        attachment.put("message",text);
        attachment.put("name", "MyGreatAndroidAppTest");
        attachment.put("href", "http://stackoverflow.com/users/909317/sunny");
        attachment.put("description","Test Test TEst");

        JSONObject media = new JSONObject();
        media.put("type", "image");
        media.put("src",  imageURL);
        media.put("href",imageURL);
        attachment.put("media", new JSONArray().put(media));

        JSONObject properties = new JSONObject();

        JSONObject prop1 = new JSONObject();
        prop1.put("text", "Text or captionText to Post");
        prop1.put("href", imageURL);
        properties.put(text, prop1);

        // u can make any number of prop object and put on "properties" for    ex:    //prop2,prop3

        attachment.put("properties", properties);

        Log.d("FACEBOOK", attachment.toString());

        Bundle params = new Bundle();
        params.putString("attachment", attachment.toString());
        facebook.dialog(MyProjectActivity.this, "stream.publish", params, new DialogListener() {

            @Override
            public void onFacebookError(FacebookError e) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onError(DialogError e) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onComplete(Bundle values) {
                final String postId = values.getString("post_id");
                if (postId != null) {
                    Log.d("FACEBOOK", "Dialog Success! post_id=" + postId);
                    Toast.makeText(MyProjectActivity.this, "Successfully shared on Facebook!", Toast.LENGTH_LONG).show();

                } else {
                    Log.d("FACEBOOK", "No wall post made");
                }

            }

            @Override
            public void onCancel() {
                // TODO Auto-generated method stub

            }
        });      

    } catch (JSONException e) {
        Log.e("FACEBOOK", e.getLocalizedMessage(), e);
    }
}
...