开发者

facebook create_event posts on my app's wall not the user's wall

开发者 https://www.devze.com 2023-02-05 05:56 出处:网络
i\'m attempting to provide a facility on my site that allows a user to create a facebook event for their booking.

i'm attempting to provide a facility on my site that allows a user to create a facebook event for their booking.

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

now im doing the correct process:

1) first getting authorisation from the user https://graph.facebook.com/oauth/authorize?client_id=APP_ID&redirect_uri=http://urlimredirectingto.comtype=web_server

2) requesting for an access token with the "code" that is returned in step 1 https://graph.facebook.com/oauth/access_token

3) using the access_token to create the event ...

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

but the event is posted on my app's wall, not the user's wall. It shouldn't have anything to do with the authentication/access_token elements because i use the same process to post on the user's wall. (http://developers.facebook.com/docs/reference/api/status/) and that work开发者_开发百科s just fine.


I came back with a solution, after a week of working at many features with Facebook SDK, it finally works!

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

For events, you have to request the create_event permission.

You should use /me/events to post on your events.

I user the C# SDK for Facebook from Codeplex - last version available for dld (aug 2011 - v5.2.1).

Good luck!


I don;t see in your request for Authorization any permission.. base permissions are not enough to do the postings. i used:

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

This is in the context of a canvas app. where MY_APP_URL is the url from facebook of the app: http://apps.facebook.com/MY_APP_NAME_OR_ID

See extended permissions for events and check event's page in documentation


[EDIT] - I came back, sorry, now i did a test, and indeed, it works for me, but only of i post on my app's wall; even if i provided the 'user_events' permission i get this error:

The remote server returned an error: (403) Forbidden when posting on a user's wall. This being said, i also subscribe to this question.

0

精彩评论

暂无评论...
验证码 换一张
取 消