iOS tag friend in status update - facebook-graph-api

I'm currently using iOS Facebook SDK 3.1. To post a feed story to a users timeline, when on < iOS 6, i've been using +[FBRequest requestForPostStatusUpdate:place:tags:]. This works great, except when I attept to tag a friend [such as I would when typing #FRIENDS_NAME on Facebook.com into the composer. I know that I can pass an array of objects to the tags: argument, however, as I expected, also passing nil to place yields an error (#100) Cannot specify user tags without a place tag.
For sake of completion, here's an example of what I was using:
NSArray *tags = #[#(FB_UID)];
[FBRequestConnection startForPostStatusUpdate:#"Friends Name, this is a test"
place:nil
tags:tags
completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
}];
Now I understand that using this method, it's not possible to tag a friend in my status. However, is there a method, any method, using the graph API to tag a friend in a feed post, the same way it'd work tagging a user on Facebook.com? I've spent the better part of this morning looking for answers, and i've yet to find any solutions. Any questions i've found on it seem to be at least a year old, so I wasn't sure if they were still relevant anyway. Any assistance would be greatly appreciated!

However, is there a method, any method, using the graph API to tag a friend in a feed post, the same way it'd work tagging a user on Facebook.com?
No.
I've spent the better part of this morning looking for answers, and i've yet to find any solutions.
That’s because there are none – Facebook deactivated this feature for posts made via API quite a while ago.
For Open Graph actions, the situation is different – the allow something called mention tagging.

Related

Did Google recently change UI to grant public access to bucket objects in Google Cloud Platform?

Ok, I've been using Google Cloud Platform for some video files
that are are viewable from a few web pages I built. I started this two or three years ago, and I have loved it.
But, now it appears they broke it, without warning/telling us.
So, in the platform's console, yesterday (for first time since a month or two ago), I uploaded another video...that part went fine. But, when it came time to click on the checkbox to grant public access, the checkbox is now GONE. (The only part of the UI that looks NEW,
is the column labeled 'public access'. Instead of just a check-box to toggle on or off, now there's a yellow-triangle and an oval-shaped symbol. Once or twice, I was able to get a popup to appear saying 'edit permission', but that quickly led into the weeds.)
After half an hour or so, I finally thought to call platform support, and explained my problem to a guy (with just enough Australian accent to cause me to have to ask for repeats quite a bit...sigh).
So, they logged me a case# and I suggested I was headed to bed, and asked that we now use email (rather than the phone) to continue. Just before bed, I got the case#, and a query about whether it was ok for them to 'change my console'. I replied to the email, saying yes, and went to bed.)
So that was last nite. This morning, re-reading their email, it seems to say that it could be 3 or 4 days, before a more technical person will contact me.
Some re-reading their platform-console docs, I'm now GUESSING that maybe they just nuked the public-access checkbox, and that now I'm supposed to spend hours (days?) taking a short-course on IAM-permmissions, and learn some new long-winded method.
(This whole mess could have been avoided, if they'd just emailed us an informational warning of this UI-change, with some new 5-step short list or tutorial of how to learn to use their 'new, much more complicated,
way to specify public-access'. From where I sit, this change is equivalent to Microsoft saying 'instead of that checkbox, you'll need to learn to make registry edits...see our platform docs on how to do that.)
Right now, I have more than half-a-mind, to seriously consider bailing out of Google's cloud storage, and consider switching to one of the others. But, I'm not quite ready yet, to make that jump (from the frying-pan into the fire?). :^)
Anyone else been down this road? What meeting did I miss? Is there a quicker way out of my dilemma, than just waiting for Google-support to get back to me?
It looks like the change you mention was introduced on July 18th. I’m not sure why, but judging by the change description, it looks like it is aimed to avoid accidentally making sensitive information public: “Objects can no longer be made public through one-click actions”.
You can find the procedure to make a single object public here. It can be achieved through the Console and won't take you more than a few minutes. Once the object is shared publicly, you can use the icon in the “public access” column to get the URL for the object.
You can also make all the content of a bucket public using a similar approach.
When you upload your objects into a bucket, you can upload with ACL as publicRead
and all your objects will have public URL.
public async Task UploadObjectAsync(string bucketName, string objectName, Stream source, string contentType = "image/jpeg")
{
var storage = StorageClient.Create();
await storage.UploadObjectAsync(bucketName, objectName, contentType, source, new UploadObjectOptions()
{
PredefinedAcl = PredefinedObjectAcl.PublicRead
});
}
As I suspected. (I still wonder if they even considered sending an email to each registered/existing customer.)
Ok, yes, (finally, after some practices), this solves it! Thx for those two answers.
(But in my view, their UI-change is still a work-in-progress) So, I have a SUGGESTION for ya, Google. Once one is into the permissions-edit-dialog, and remembers to do an 'add', there's are the 3 fields. The first and third are fine...drop-downs with choices. But that middle entry needs work...how about doing something like an auto-guess-ahead...initialize the field to a suggested value of 'allUsers', so we don't have to remember what to type and how to spell it, or something along those lines.
EDIT: [Actually, it ought to be possible to make that field a drop-down-list choice, with 'allUsers' as one suggested value, and a second value as a text-entry (for specific user-names, etc).]
Unfortunately, 8 Ball Pool it is not possible to list files Google Hangouts without access to the Omegle bucket that contains them. This is due to the current design of the library, which requires that the bucket is loaded before listing its files.

Facebook graph api started to return only the first 10 posts in a group feed

a few days ago I started to experience troubles accessing facebook group data feed using graph api (i am using v2.8 but the results are the same also with older versions).
The graph api call started to return only the first 10 posts in the feed (i.e. the most recent ones) even though no changes were made from my side.
The same behaviour is reproducible also in graph api explorer using /groupId/feed path (I am not passing the 'limit' parameter in the request url). Previously it has been returning all the available posts with paging, etc.
Please note that if I use a pageId instead of groupId all the posts in the specified page are returned correctly - seems only groups are affected.
Can somebody shed some light on this?
Regards
Due to this thread in Facebook Developer Community it looks like a bug.
Here are bug reports:
https://developers.facebook.com/bugs/1316646108368355?hc_location=ufi
https://developers.facebook.com/bugs/1796973007211974?hc_location=ufi
https://developers.facebook.com/bugs/1645827285730392?hc_location=ufi

Read AICC Server response in cross domain implementation

I am currently trying to develop a web activity that a client would like to track via their Learning Management System. Their LMS uses the AICC standard (HACP binding), and they keep the actual learning objects on a separate content repository.
Right now I'm struggling with the types of communication between the LMS and the "course" given that they sit on two different servers. I'm able to retreive the sessionId and the aicc_url from the URL string when the course launches, and I can successfully post values to the aicc_url on the LMS.
The difficulty is that I can not read and parse the return response from the LMS (which is formatted as plain text). AICC stipulates that the course start with posting a "getParam" command to the aicc_url with the session id in order to retrieve information like completion status, bookmarking information from previous sessions, user ID information, etc, all of which I need.
I have tried three different approaches so far:
1 - I started with using jQuery (1.7) and AJAX, which is how I would typically go about a same-server implementation. This returned a "no transport" error on the XMLHttpRequest. After some forum reading, I tried making sure that the ajax call's crossdomain property was set to true, as well as a recommendation to insert $.support.cors = true above the ajax call, neither of which helped.
2 & 3 - I tried using an oldschool frameset with a form in a bottom frame which would submit and refresh with the returned text from the LMS and then reading that via javascript; and then a variation upon that using an iFrame as a target of an actual form with an onload handler to read and parse the contents. Both of these approaches worked in a same-server environment, but fail in the cross-domain environment.
I'm told that all the other courses running off the content repository bookmark as well as track completion, so obviously it is possible to read the return values from the LMS somehow; AICC is pitched frequently as working in cross-server scenarios, so I'm thinking there must be a frequently-used method to doing this in the AICC structure that I am overlooking. My forum searches so far haven't turned up anything that's gotten me much further, so if anyone has any experience in cross-domain AICC implementations I could certainly use recommendations!
The only idea I have left is to try setting up a PHP "relay" form on the same server as the course, and having the front-end page send values to that, and using the PHP to submit those to the LMS, and relay the return text from the LMS to the front-end iframe or ajax call so that it would be perceived as being within the same domain.... I'm not sure if there's a way to solve the issue without going server-side. It seems likely there must be a common solution to this within AICC.
Thanks in advance!
Edits and updates:
For anyone encountering similar problems, I found a few resources that may help explain the problem as well as some alternate solutions.
The first is specific to Plateau, a big player in the LMS industry that was acquired by Successfactors. It's some documentation that provide on setting up a proxy to handle cross-domain content:
http://content.plateausystems.com/ContentIntegration/content/support_files/Cross-domain_Proxlet_Installation.pdf
The second I found was a slide presentation from Successfactors that highlights the challenge of cross-domain content, and illustrates so back-end ideas for resolving it; including the use of reverse proxies. The relevant parts start around slide 21-22 (page 11 in the PDF).
http://www.successfactors.com/static/docs/successconnect/sf/successfactors-content-integration-turley.pdf
Hope that helps anyone else out there trying to resolve the same issues!
The answer in this post may lead you in the right direction:
Best Practice: Legitimate Cross-Site Scripting
I think you are on the right track with setting up a PHP "relay." I think this is similar to choice #1 in the answer from the other post and seems to make most sense with what you described in your question.

What types of posts are in a feed?

I was wondering what all the possible types of posts I can expect in a feed. The documentation at http://developers.facebook.com/docs/reference/api/post/ mentions that the type field could be link, video, and photo, but that's clearly not a comprehensive list. I know that there are at least the following possible types (because I've seen them): status, link, video, photo, checkin, note, swf, and music.
But are there more that I'm missing? Is there a complete list of these types somewhere?
I know of someone who says that they've seen event attendance and friendship acceptance posts in their home feed (from /me/feed), but I can't seem to recreate that. Are those also types of posts that I could expect?
It appears that currently there is no official list from a FB resource. The closest thing I could find was a related StackOverflow question
I would suggest reaching out to their developer community directly, and, of course, providing a link here once you've done so!
As of 2013-12-18 the documentation says:
name: status_type
description: Type of post
permissions: read_stream
Returns: One of mobile_status_update, created_note, added_photos, added_video, shared_story, created_group, created_event, wall_post, app_created_story, published_story, tagged_in_photo, approved_friend
Doc reference
You can find a list for Graph v4.0 here (search for status_type):
https://developers.facebook.com/docs/graph-api/reference/v4.0/page/feed
The type of a status update. Values include:
added_photos
added_video
app_created_story
approved_friend
created_event
created_group
created_note
mobile_status_update
published_story
shared_story
tagged_in_photo
wall_post
Though these are listed for Page feed documentation, but I guess it's the same for others as well. I couldn't find it any place else. Also note that mobile_status_update is a legacy one kept for backward compatibility. See this: https://developers.facebook.com/bugs/564448573658836/

Facebook Group invite via Graph API

I about to built a little online game in Action Script 3. At the moment everything is working pretty fine and there is just one thing left to do that makes me going crazy. After every Level of the Game the user should notified about his success and in case that the success was good enough, the user should be invited to a facebook group. At the Moment i have got an Facebook App, Authentification and Authorisation are working and what still is to manage is the invitation itself.
Does anybody know if there is a way to make this happen, and if so, how could it be done? Thanks a lot for a reply!
greetings!
So, after having a nice day of »facebook api investigation« i would sum up the things i found out:
I'm quite sure that there is no way to make an group invitation via the graph api. The best result i could reach was an Error that told me: »requires the manage_groups permission«.
Consequently I added this permission to the login method and »tada«: the app didn't work anymore, just told me that there is an error with the app and I should try later again.
The code for getting this great message looked like this:
FB.api( "//members","POST", { name : "user name" }, function( response ){
//the great error appears here in the response
} );
I also was looking for something in the facebook.connect api but could not find something related to the problem i tried to solve.
If there is anybody who knows something better to try, i would very interested.
Greeting Philipp
Looks like "manage_groups" is not available to the public, (yet?). I'm following this and this discussion about it, as "manage_groups" seems to be required to invite a user to a group, but is not listed in the Facebook reference of extended permissions.