ColdFusion - OAuthException - This authorization code has expired. [code=100] - facebook

I am having a go at trying to get the Facebook API SDK for ColdFusion working.
https://github.com/affinitiz/facebook-cf-sdk
I have followed all the steps and it seems to work well (using only server-side login).
However, if I leave the page for say, an hour, when I return and refresh the page (which was showing my profile name and friends list) it shows up with an error that I am unable to get rid of, unless I clear the cookies.
Is there something I am missing with this FB login? Am I meant to be checking against something manually in order to persist the session?
Looking at my cookies, I have the following stored:
fbm_155030275875
fbsr_155030275875
CFID
CFTOKEN
It's all new to me, so I'm a bit lost. I can't see anything in the docs for the SDK about this and Googling the error brings nothing.
I have attached a screenshot of the error.
I'd appreciate any help you can offer!
Thanks,
Michael.

I'm not familiar enough with that particular project, but in general, your code should be requesting the various Graph API calls, and requesting the token as necessary. If the token has expired, you request a new one. I'd expect the facebook-cf-sdk product to do this, but again, I'm unfamiliar with it.
Good news is, the Facebook Graph API is just a series of HTTP calls. See my talk at NC DevCon for an example of logging in and making some graph calls: (a bit long; go to about the 1:42:00 mark)
http://textiles.online.ncsu.edu/online/Play/61d0900d63fd4c1cb862622d1c8e13521d?catalog=35211b84-031b-4a18-8875-506f09b9b3a7
GitHub repo:
https://github.com/bdcravens/ncdevcon2012-handson-auth (note the branches - check out the step4 branch)
These don't answer your question 100%, but they may be a good starting point for you.

Ok, I figured out how to solve this issue using a solution someone provided on Github. I just wanted to post this here in case someone else encountered the issue and wasn't sure how to solve it. In my case however, after I applied the solution from that post was I need to do a page refresh. Link below.
https://github.com/affinitiz/facebook-cf-sdk/issues/31

Related

Using wget to download page within Moodle

I understand that this might be too specific but I am still quite new and having some difficulty figuring this out. So, I am hoping someone can offer up a clear command which can achieve my goal.
My goal is to download a page from Moodle. Now, this is Moodle 3.9 but I don't think this matters. The page is a wiki which is part of Moodle. So, there are child pages, links, images, etc. Now, each student gets their own wiki and it is available by URL. However, one must be logged in to access the URL or else a login page will show up.
I did review this question, which seemed like it would help. It even has an answer here which seems specific to Moodle.
By investigating each of the answers, I learned how to get the cookies from Firefox. So, I tried logging into Moodle in my browser, then getting the cookie for the session and using that in wget, according to the Moodle answer cited above.
Everything I try results in a response in Terminal like:
Redirecting output to 'wget-log.4'
I then found out where wget-log files are stored and checked the contents, which seemed to be the login page from Moodle. While I am quite sure I got the cookie correct (copy-and-paste) I am not sure I got everything else correct.
Try as I might (for a couple of hours), I could not get any of the answers to work.
My best guess for the command is as follows:
wget --no-cookies --header "Cookie: MoodleSession=3q00000000009nr8i79uehukm" https://myfancydomainname.edu/mod/ouwiki/view.php?id=7&user=160456
It just redirects me to the wget-log file (which has the Moodle login page).
I should not need any post data since once logged into my browser, I can simply paste this URL and it will take me to the page in question.
Any ideas what the command might be? If not, any idea how I could get some pretty clear (step-by-step) instructions how to figure it out?

Facebook like count problems

I was trying to get a piece of information that is pretty standard and public: the number of likes of a page. However, facebook somehow managed to make this simple task very complicated.
I was trying to use graph API, but for some reason, it's required to have special permission called "Page Public Content Access", which is denied to almost everyone, or have managing permission of the site. In the first place, I don't understand why this is required for getting a piece of information anyone can get, even if not logged in.
Afterward, I was trying to get the like count of a page I created, but it seems that Facebook cannot find it.
It seems that before v5 it was quite easy. But now, it seems like a bug. I researched facebook's community, and some other people were complaining. A guy from facebook said that they'd work on it, but that was 4 months ago. He hasn't replied again.
Does anyone have any idea on how to get the number of like? Perhaps something that I missed?
<?php
declare(strict_types=1);
$url='https://www.facebook.com/zuck/videos/10111118208672491/';
$ch=curl_init();
curl_setopt_array($ch,array(
CURLOPT_URL=>$url,
CURLOPT_ENCODING=>'',
CURLOPT_RETURNTRANSFER=>1,
CURLOPT_SSL_VERIFYPEER=>0,
//CURLOPT_VERBOSE=>1,
CURLOPT_USERAGENT=>'bot',
));
$html=curl_exec($ch);
curl_close($ch);
// reaction_count:{count:100159}
$rex='/reaction_count\:\{count\:(?<result>\d+)/';
preg_match($rex,$html,$result);
$result=$result['result'];
var_dump($result);

Venmo Deeplinking

I have been looking into how to venmo deeplinking schemes and am trying to open a user's account based on their username. I looked all over the internet for this and closest I came was this blog post. The person in the blog post is so close to achieving what I'm going for but I still can not figure it out. I tried changing up the "venmo://users" multiple times trying to open up a profile with a username but nothing has worked. How can I accomplish this?
Thank you in advance
I found a tricky way to finding out Venmo's deep link to a user's account. On this site https://app.urlgeni.us/ you can paste the URL you're trying to get the deep link for and it'll provide iOS and Android information.
Also, by reviewing how it works, it provides an API (https://app.urlgeni.us/api/internal/test_url) to which you must invoke (POST method) and it'll return the deep link, by sending a JSON input as the following:
{"url":"venmo.com//UserName"}
Response will include something like:
"android_scheme": "intent://user?user_id=XXXXXXX#Intent;package=com.venmo;scheme=venmo;end",
"ios_scheme": "venmo://users/XXXXXXX"

Is instagrams Rest API "https://api.instagram.com/v1/users/{user-id}" not working / removed?

I am using the Instagram Rest API for a simple application and I've hit a bumb.
The call https://api.instagram.com/v1/tags/{tag-name} works fine (I also have the ?accesstoken=XXXXX... appended).
But the call for basic user information is not working. Not in the developer console and not in the browser when modifying my own URL.
Has the method been removed? Is it broken? If no one has an answer for that; How do you contact Instagram to report the broken link?
Thanks to #CnapoB I managed to realise the call wasnt what I was looking for! And also he showed me the Instagram Endpoints doesn't show the easy way!
https://api.instagram.com/v1/tags/{tag-name}?access_token=ACCESS_TOKEN
might as well be
https://api.instagram.com/v1/tags/{tag-name}?client_id=CLIENT_ID
which means you don't have to have the user login to the application etc.
Thank you so much for this!
What I wanted to do was instead this: (example: tyrabanks)
https://api.instagram.com/v1/users/search?q=tyrabanks&client_id=CLIENT_ID&count=1

Is there ANY way to remove photo tags with facebook API?

There are some old posts related to this topic but the API has since changed, so I wanted to ask again. Is there any way to remove photo tags with the Facebook API?
I saw this documentation about deleting photo tags with the graph API.
https://developers.facebook.com/docs/reference/api/photo/#tags
You can delete a tag for a particular user in the photo by issuing a HTTP DELETE request to /PHOTO_ID/tags/USER_ID or PHOTO_ID/tags?to=USER_ID.
Deleting a tag on a photo requires the publish_stream permission and supports the following parameters.
Parameter Description Type Required
to USER_ID of the User to tag; can also be string yes
provided in URL path (see above).
If the deletion is successful, you get the following return.
Description Type
If the deletion succeeded boolean
It did not work when I tried it. Instead, I always get the following error:
{
"error": {
"message": "(#3) Application does not have the capability to make this API call.",
"type": "OAuthException",
"code": 3
}
}
I submitted a bug report to Facebook and they seemed to acknowledge a bug by putting it into "triaged" status. Then a few weeks later, although several other developers had subscribed to the bug report, they closed the case with this explanation:
We are prioritizing bugs based on impact to the developer community. As this bug report has not received much attention from other developers, we are closing it so as to better focus on the top issues. There is a good chance your issue is due to an implementation problem in which case you can try to find help on Stack Overflow.
The bug report is here: https://developers.facebook.com/bugs/122135101317762
Can anyone help me figure out how to untag via the API? My app is currently written as a Web app, not as a mobile one.
Thank you in advance for any help on this.
Update: As Christopher Blizzard explains in the accepted answer, this isn't in fact a bug, but intentional behaviour that was previously badly documented.
Before this was known, back when this answer was first posted, I investigated a little to try and figure out if there was any way around this restriction. The answer is no. I've left the detail of my findings below in case they are of interest to anybody in the future, but Christopher Blizzard's input makes most of this obsolete.
I'm reasonably confident that the answer is no, there's no way at all. I've exhausted all possible lines of investigation I can think of, and come up blank. Let me list my findings:
1) The bug affects both ways of deleting photo tags listed in the documentation.
Sending a delete request to https://graph.facebook.com/PHOTO_ID/tags/USER_ID/ and sending one to https://graph.facebook.com/PHOTO_ID/tags?to=USER_ID should both work, according to the documentation. However, in reality, both approaches fail with the following error, as you've already observed:
{
"error": {
"message": "(#3) Application does not have the capability to make this API call.",
"type": "OAuthException",
"code": 3
}
}
2) It's got nothing to do with your app's permissions
Using Graph Explorer you can easily test this stuff out using an access token that grants you all possible permissions, and deleting tags still fails.
3) It's got nothing to do with the user's privacy settings
I tried creating a new user on Facebook and setting every single privacy setting in the settings menu to the most lenient option available. It made no difference.
4) It's not to do with the photo's owner or how the original tag was created
Even when the person whose access token you're using owns the photo that the tag is on and created the tag themselves, you still get the same error when trying to delete the tag. This applies whether they created the photo and tag through the normal Facebook user interface, or with your app through the Graph API.
5) There's no workaround using APIs other than Graph
FQL only allows data retrieval, not insertion, modification or deletion. Open Graph has no methods relating to photos or photo tags. The deprecated REST API - which is still functional, but which Facebook instructs us not to use, and whose documentation has been taken down - has functioning methods for getting and adding tags, but none for deleting them, as you can see in a a cached version of the documentation, via the Wayback Machine.
6) There doesn't seem to be any way to delete a tag using POST requests.
You can change the location of an existing tag, but that's it. Specifying an invalid location throws an error and doesn't affect the existing tag. Specifying the to field twice in a post request to try and change the target of a tag throws an error and has no effect.
7) Others have tried to solve the same problem before, and they have not succeeded.
I haven't found many posts about this issue, but there are these two, neither of which are helpful:
Delete photo tag from Graph API
http://queforum.com/facebook-applications/78655-facebook-untag-user-photo-via-facebook-graph-api.html
After testing all the points above, I'm out of ideas. Of course, there's no way I can say with certainty that this is impossible - we don't know what's going on on Facebook's back end or why the bug exists. I think these tests represent a pretty thorough examination of the problem, though, and they haven't revealed any solution.
I just updated the documentation on developers.facebook.com, but the short version is that the delete tag API is whitelisted only for certain apps.