Facebook create_event публикует на стене моего приложения, а не на стене пользователя - PullRequest
0 голосов
/ 19 января 2011

Я пытаюсь предоставить объект на моем сайте, который позволит пользователю создать событие Facebook для своего бронирования.

http://developers.facebook.com/docs/reference/api/event/

Теперь я делаю правильный процесс:

1) первое получение авторизации от пользователя https://graph.facebook.com/oauth/authorize?client_id=APP_ID&redirect_uri=http://urlimredirectingto.comtype=web_server

2) запрос на токен доступа с «кодом», который возвращается на шаге 1 https://graph.facebook.com/oauth/access_token

3) использование access_token для создания события ...

   string facebookCreateUri = string.Format("https://graph.facebook.com/{0}/events", loggedInMember.FacebookUID);

  var formData = new HttpUrlEncodedForm() 
  {
   {"access_token", accessToken},
   {"owner", loggedInMember.FacebookUID},
   {"description", "nice event that should be on the owners wall"},
   {"name", "event on the users wall"},
   {"start_time", "1272718027"},
   {"end_time", "1272718027"},
   {"location", "rochester"},
   {"privacy","OPEN"}       
  };

  HttpContent content = HttpContent.Create(formData);
  HttpClient client = new HttpClient();

  var response = client.Post(facebookCreateUri, "application/x-www-form-urlencoded", content);

но событие размещено на стене моего приложения, а не на стене пользователя. Это не должно иметь ничего общего с элементами authentication / access_token, потому что я использую тот же процесс для публикации на стене пользователя. (http://developers.facebook.com/docs/reference/api/status/) и это прекрасно работает.

Ответы [ 2 ]

1 голос
/ 27 сентября 2011

Я вернулся с решением, после недели работы над многими функциями с Facebook SDK, оно наконец работает!

protected void onPostEvent(object sender, EventArgs e)
    {
        if (CanvasAuthorizer.Authorize())
        {
            var fb = new FacebookWebClient(CanvasAuthorizer.FacebookWebRequest);

            dynamic parameters = new ExpandoObject();
            parameters.description = txtEvDett.Text;
            parameters.name = txtEvName.Text;
            parameters.start_time = DateTime.Now.ToString("yyyyMMdd");
            parameters.end_time = DateTime.Now.AddDays(1).ToString("yyyyMMdd");
            parameters.access_token = CanvasAuthorizer.FacebookWebRequest.AccessToken;

            dynamic eventDet = fb.Post("me/events", parameters);

            litEvent.Text = String.Format("You have created the event with ID: {0}", eventDet.id);
            lnkEvent.Visible = true;
            lnkEvent.NavigateUrl = String.Format("http://www.facebook.com/event.php?eid={0}", eventDet.id);
        }
    }

Для событий вы должны запросить разрешение create_event .

Вы должны использовать / me / events , чтобы публиковать сообщения о ваших событиях.

Я пользуюсь C # SDK для Facebook от Codeplex - последняя версия, доступная для dld (август 2011 - v5.2.1)

Удачи!

1 голос
/ 19 сентября 2011

Я не вижу в вашем запросе на Авторизацию каких-либо разрешений .. базовых разрешений недостаточно для размещения сообщений.я использовал:

https://www.facebook.com/dialog/permissions.request?app_id=MY_APP_ID&next=MY_APP_URL&display=page&response_type=code&canvas=1&perms=publish_stream,user_about_me,email

Это в контексте приложения холста.где MY_APP_URL - это URL из Facebook приложения: http://apps.facebook.com/MY_APP_NAME_OR_ID

См. расширенные разрешения для событий и проверьте страницу события в документации


[ПРАВИТЬ] -Я вернулся, извините, сейчас я прошел тест, и, действительно, он работает для меня, но только из-за того, что я публикую на стене моего приложения;даже если я предоставил разрешение 'user_events', я получаю эту ошибку:

Удаленный сервер возвратил ошибку: (403) Запрещено при публикации на стене пользователя.При этом я тоже подписываюсь на этот вопрос.

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