What does it mean for a Facebook Event to be "private"? - facebook

I use Facebook-C#-SDK 5.0.3 FacebookClient.Post("me/events", [parameters including "privacy" => "secret"]). The new event shows as "Private Event" on my Facebook. However, my friends see the event appear on their Wall, and when they click on the event they see it as "Public Event".
I am trying to create test events for debugging purposes, but even though I see the event as "Private Event", and when I edit the event the three checkboxes are cleared:
-- Anyone can view and RSVP (public event)
-- Guests can invite Friends
-- Show the guest list on the event page
the event is still visible and announced to all my friends. They can't RSVP, but they do get the UX to post to the event's wall.
Thanks,
Jon

With the SDK the convention is to pass parameters in as a dynamic object or dictionary.
According to a post here the parameter name for setting visibility is 'privacy_type'.
So (without testing) this is how I would go about it in .Net 4:
dynamic parameters = new ExpandoObject();
parameters.privacy_type = "SECRET";
_facebookClient.Post("me/events", parameters);

Related

How to use apprequest for send or askfor using OpenGraph API?

I am using Facebook Unity SDK to implement a sample gift module in my game.I am using the method:
**public static void AppRequest(
string message,
OGActionType actionType,
*string objectId*,
string[] to,
string data = "",
string title = "",
FacebookDelegate callback = null)**
Ref: https://developers.facebook.com/docs/games/requests/v2.2
AS the OGAction type refres to the action like askfor or send,the next arguement is object_id which i unable to get properly.
Can anyone tell do the object will be created in the app itself or it must be created in the opengraph section of my app registerd on facebook?Do i need my own sever for this?
I just need to send an item and and recieve it at the reciever's end.Please tell me where i am wrong or what i should i do to get it properly?
This is what I did:
1- On the "Tools & Support" section in the Developers' page, open "Object Browser".
2- Set the "App" and "Object Owner" section to your App.
3- Click "New Object".
4- A new object will be created and you can copy its id in the AppRequest parameters.
I don't know if there is an easier or better way to do it but, so far, I have been getting requests without issues.
Cheers!

Facebook Graph API - Events ticket_uri

I am trying to add a ticket_uri to the event that I am creating.
I enabled the "Events Timezone" migration in my app settings.
I am posting on behalf of a user that is manager of the page.
Currently it's not working when I create a new event. The new event has no ticket uri.
If I update the new event, just after it's created, the ticket uri works...
Is this a bug or am I doing something wrong?
$fbEvent = $facebook->publish('/events', $event);
if(isset($fbEvent['id']))
{
$facebook->publish('/' . $fbEvent['id'], array('ticket_uri' => 'http://lowiebenoot.be'));
}
Updating right after it's created is just stupid...
You must get a "Page access token" and then post to {page_id}/events. Here's a copy of the steps I've posted a couple of places:
Enable the "Events Timezone migration"
Log into FB as a user that has admin rights on the FB Page that we want events posted to
Use the APPLICATION's ID to build this link to authorize the
managing of pages
https://www.facebook.com/dialog/oauth?client_id=MY_APP_ID&redirect_uri=MY_SITE_URL&scope=manage_pages,create_event&response_type=token
Exchange token for perm (longer token)
https://graph.facebook.com/oauth/access_token?client_id=MY_APP_ID&client_secret=MY_CLIENT_SECRET&grant_type=fb_exchange_token&fb_exchange_token=(token from step 3)
Visit this page, find the PAGE you want to post and copy the new
access_token https://graph.facebook.com/me/accounts?access_token=
(token from step 4)
Use this last token (from step 5) and the PAGE's ID to post to post
the event per the instructions at
https://developers.facebook.com/docs/reference/api/page/#events
Note that if you create a lot of events, you will "spam" every user who Like'd the page. FB recently added the 'no_feed_story' option to prevent this.

How to subscribe to real-time updates for a Facebook page's wall

Facebook's real-time updates docs now say that you can get the feed for a page:
You can subscribe to the page's feed in the same way you subscribe to
a user's feed - the subscription topic should be 'user' and the
subscription field should be 'feed'
My understanding of this is that I need to post to the graph API to subscribe as such:
curl -d \
"object=user&fields=feed&callback_url=$CALLBACKURL&verify_token=$SECRET" \
"https://graph.facebook.com/$PAGEID/subscriptions?access_token=$OAUTHTOKEN"
(This is a bash script.) Here $CALLBACKURL is set up correctly following their example code. (At least I think it's correct -- I can successfully add subscriptions with it.)
The $OAUTHTOKEN is the one for my Facebook App.
And the $PAGEID is the facebook object id of the page I'd like to get realtime updates for.
When I do this, the call appears to work -- no error message. My callback gets called. But I certainly don't get notified when something happens on the page's feed.
So what's missing? Does the page need to install the app whose oauth token I'm using? Or do I somehow need to get an oauth token for the page itself by logging in as the page?
I do not know if this can help you but I'll tell you where I am for real-time update page feed:
(permissions : manage_page,offline_access,read_stream)
your application must be linked to the page (then install the application but not required to have a tab ex. create tab https://graph.facebook.com/PAGE_ID/tabs?app_id=APP_ID&method=POST&access_token=PAGE_ACCESS_TOKEN and delete tab
TAB_ID=PAGE_ID.'/tabs/app_'.APP_ID;
https://graph.facebook.com/TAB_ID?method=DELETE&access_token=PAGE_ACCESS_TOKEN)
function page_access_token($page_id,$access_token){
$page_token_url="https://graph.facebook.com/" .
$page_id . "?fields=access_token&" . $access_token;
$response = file_get_contents($page_token_url);
$resp_obj = json_decode($response,true);
$page_access_token = $resp_obj['access_token'];
return $page_access_token;
}
function page_tabs_create($page_id,$app_id,$page_access_token){
$page_settings_url = "https://graph.facebook.com/" .
$page_id . "/tabs?app_id=".$app_id."&method=POST&access_token=" . $page_access_token;
$response = file_get_contents($page_settings_url);
$resp_obj = json_decode($response,true);
return $resp_obj;
}
function page_tabs_delete($tab_id,$page_access_token){
$page_settings_url = "https://graph.facebook.com/".$tab_id."?method=DELETE&access_token=" . $page_access_token;
$response = file_get_contents($page_settings_url);
$resp_obj = json_decode($response,true);
return $resp_obj;
}
Subscription: to subscribe must be like a "user" and therefore object = user fields = feed but you have to add new fields because otherwise it receives the comments and likes the wall so you must add "status" in order to receive the articles posted (my problem is to get other content such as links I have managed to add "link" as fields but I am not receiving notifications when a link is posted)
$param = array ('access_token' => $ access_token,
'object' => 'user',
'fields' => 'feed, status, link'
'callback_url' => 'http:// ******** fbcallback.php'
'verify_token' =>'***********',
'include_values' => 'true');
POST
https://graph.facebook.com/APP_ID/subscriptions
my English is not very good but I hope it will help you, on my side I'm still looking for really all updates to the wall (links, video ...)
I have been researching on this and i am getting the pushes for pages too.
while subscribing make sure that object = user and fields = feed, status is present.
Make sure that application is added to your page, then only you will receive the update.
Response received from facebook is as below :-
{"entry":[{"id":"*******","uid":"*****","time":1332940650,"changed_fields":["status"]}],"object":"user"}
where **** is my pageId.
The above push is received on adding a new post , as you can see the changed_feild is status , but when we post on wall the changed_fields comes as feed. Below link helped me in receiving pushes for the page.
http://bugs.developers.facebook.net/show_bug.cgi?id=18048
Firstly, subscription to real-time update for page/feed doesn't work.
See: http://bugs.developers.facebook.net/show_bug.cgi?id=18048
Does the page need to install the app whose oauth token I'm using?
Yes
Or do I somehow need to get an oauth token for the page itself by logging in as the page?
If i correctly understand you, you need only app access_token
https://graph.facebook.com/oauth/access_token?client_id=your_app_id&client_secret=your_secret&grant_type=client_credentials
I first started reading the docs about real-time updates thinking that it could delivery the actual data. But, as I realized, that's not the purpose.
Real-time updates are just to tell you that something has changed, and once it happens, you can call the api with the conventional method.
Also, seems like there's an error on this part the subscription topic should be 'user' and the subscription field should be 'feed'. The subscription topic, actually, should be 'page'. (Have you thought the same?)
And by subscribe on page feed as the same as user feed, means that you can get update notifications, not the data itself.
Not sure if this is a common mistake, but I'm posting it just in case.
--
Currently I'm working on a data mining tool that will need real-time updates. But first, I'm focused on the data itself, so I can't post any examples yet. (I'll edit this answer when implementing this part)
What I can say about your issue is:
1) Look that your $PAGEID isn't correct. Actually it's your APPID instead.
2) After subscribing, have your subscription appeared on the list when calling https://graph.facebook.com/<app-id>/subscriptions?access_token=... ?
3) With user subscription, does it work? Or is it just with pages?
For this you need to set up an endpoint URL that receives both HTTP GET (for subscription verification) and POST (for actual change data) requests from Facebook.
Then you should make a POST to the graph API url https://graph.facebook.com/<app-id>/subscriptions?access_token=<access_token> to subscribe, and be ready to handle the verification request.
Then to list subscriptions, just perform a GET request on the same url, https://graph.facebook.com/<app-id>/subscriptions?access_token=<access_token>, which returns a JSON-encoded content that lists your subscriptions, up to one per object type.
Before you start waiting for the notifications you should check if the URL is actually being hit or not by FB
Check The Output of Following:
"https://graph.facebook.com/".FACEBOOK_APP_ID."/subscriptions?".$appToken."&client_secret=".FACEBOOK_SECRET;
This shall return the callback_url if set correctly !

Facebook Graph API - "Related Post" in status update

In the Facebook UI, you can hit "#" when you update your status and get a list of pages where your status update will be added as a Related Post on the page.
Is there a way to do the same in the Graph API? Assuming all authenticated, calling me/feed with a "message" parameter like this (using .NET Facebook SDK):
var client = new FacebookClient(ACCESS_TOKEN);
var parms = new Dictionary<string, object>();
parms.Add("message", "TEST fb SDK: #whatever");
client.Post("me/feed", parms);
The status update is posted, but the page doesn't doesn't get resolved as a Related Post.
If you GET a feed entry which has a Related Post created from the UI it's shown as a status update with the "to" parameter populated with the page. If you recreate that message as a POST in the API, the Related Post gets created, but:
the Related Post shows on the Info tab of the page, not the Related Posts tab
the status update doesn't have a link to the Related Post
Any thoughts? Thanks!
Someone has posted an undocumented way of tagging users using Facebook Graph API that involves using a #[{user_id}:1:{name}] syntax, eg: #[{4}:1:{Mark Zuckerberg}]. There is an open request with Facebook for full documented support of this method.

Trying to update a Facebook event using the Graph API (Facebook C# SDK)

I am trying to update the description of a Facebook event using the Facebook C# SDK. I have granted the following permission to my application:
'publish_stream,email,manage_pages,user_events,create_event,rsvp_event'
The event I am trying to update is one of my own events, so I believe I should be able to update it.
In the code below "9999" is the event id of the event I created, and the event I am trying to amend:
Authorizer authorizer = new Authorizer();
FacebookClient fbapp = new FacebookClient(authorizer.Session.AccessToken);
Console.Write(fbapp.Get("9999"));
dynamic parameters = new ExpandoObject();
parameters.description = "the new description";
fbapp.Post("9999", parameters);
The fbapp.Get works fine and returns the details of the event.
The problem is with the Post method, this returns (OAuthException) (#200) Permissions error
Any ideas as to where I am going wrong?
This issue is in fact a bug in the Facebook Graph API, see here for the bug report
It appears to be the case that you can only use the Graph API to edit events created by your app, and not existing events created by users within Facebook.
Hopefully it will be fixed soon!
If you really have all permissions, I think you should include every mandatory field in the parameters (as I haven't done this, I can only guess!) and not only the field you wish to edit.
Hope this has helped you Andrew.