After some advice.
I have a client wishing to have an app which lets them download a voucher to redeem in store but only after they post details of this offer onto 5 friends' walls.
My understanding of current Facebook policy suggests that:
1) Promotions can't require users to take any action on Facebook other than to like the page (likegate);
2) Messages posted to multiple friends at once should be unique and personally initiated - i.e. an app shouldn't bulk post to multiple users. Instead users should share things on their own wall....
Am I correct in this understanding?
If so, can anyone point me at the relevant facebook policies - can't seem to find them on the site.
Yes, those are exactly what I read on the policies page. However to be absolutely sure, you should have your corporate attorney read them and consult with you.
See
http://developers.facebook.com/policy/
and
http://www.facebook.com/promotions_guidelines.php
Related
I'm developing a Page Tab App for a contest/promotion and my client wants participants to share a certain post on their own wall to be eligible for winning. I have a few questions about this:
Is that even legal, under Facebook's promotions guidelines? Note that we don't want the user to share to be able to participate, but to be eligible for winning.
How would we go around the privacy issue for each user? I mean, can we force a user to share a post publicly, even if the normal setting is - for instance - "friends only"?
Still on privacy: can I even access who shared a certain post by using the Graph API, or get a callback response from Facebook when the user shares a post? I don't think so - the only way I see it is that the contest administrators would have to check every user's wall to see if he/she shared the post publicly. Is that how it's normally done?
I know some of these questions are duplicated but couldn't find a proper answer, so I'm asking them together here.
I know pretty well that this topic has been discussed very intensively (I read a lot all over the day).
Still, how probable is it that FB might allow me to create a frontend crawler for a non-commercial, non-public research university project?
My crawler should repeatedly lookup a very limited number of specific public fan pages and collect anonymized data like number of fans, status updates and their number of likes and number of comments each.
What I would like to show is what kind of topics in media pages are "liked" and discussed most and how that develops over time. I know about FB's restricted TOS. Thanks for your opinion on that.
The second question concerns technological approach / authorization: Reading a fan page's number of fans, status updates and their number of likes each - could I even use the API/OpenGraph for such a crawler? I think for reading page walls, you need an access token at any cost, and realizing an automatic "crawler" via an application therefore is not possible I guess (as apps only react to users' actions and cannot act like cron jobs for example)?
As you see, I am pretty new to FB development and logic. Thanks so much for your expertise.
If you mainly target public pages then you should be ok.
You need to have a facebook app and then you can authenticate as the app from your program.
You will get an app token with which you should be able to use in order to crawl public pages data.
If you check the documentation for the Page object you'll see in the tables (fields and connections) that most of what's in the Permissions column is either "No access token or user access_token" or "any valid access_token or user access_token", if you have the app token you're good.
Also, and I think this is something you'll be interested in, the Page object has the "talking_about_count" field.
So, yes you can do it, at least most of it.
As for the TOS, since all of this is perfectly ok and straight from their official documentation, there's no problem.
We have created an invite function at our site in JavaScript using the Graph API where users can invite their Facebook friends to our site. The users invited then get an invite post at their wall on Facebook.
This has been workling fine until suddenly one day the messages did not show up on the invited users wall. We even still get post sucess messages from Facebook and a Post ID.
Also, we nocticed that old invite posts were removed as well from the Faceook walls. However, other functions with the same app ID still work.
When we created a new Facebook app with a new Facebook app ID the invite functions work like normal again.
As far as we know we arent breaching any rules or regulations, and we havent been notified by Facebook (although we are quite active with FB ads).
Is there some risk Facebook have blocked our app without telling us? Can they block our domain if we continue? Are there any general rules when it comes to invite? Any tips?
Facebook has many anti-spam policies and procedures in place. If a high enough percentage of users delete the post that gets added to their wall or mark it as spam or choose to hide all posts from your application, the application will get removed and the posts removed as you have experienced. They may or may not email you to warn you.
Facebook has a high level guide to follow:
Create a great user experience
Build social and engaging applications
Give users choice and control
Help users share expressive and relevant content
Be trustworthy
Respect privacy
Don't mislead, confuse, defraud, or
surprise users
Don't spam - encourage authentic
communications
I am guessing they are flagging your account for not helping users share expressive and relevant content (I am guessing they don't get to type the message that gets shared on friends wall), as well as obviously for spam.
If you want to invite users, I would suggest using the supported method for this, the Facebook requests dialog, and move away from posting (spamming) other friends walls, as they most likely can ban your whole website or account if you keep doing what you are doing.
I'd like to know if there is a possibility to check (using Graph API or any other way) whether given user likes / shares a specific link. Probably I'll have this user's facebook ID or facebook login, but my site is non-Facebook application. Actually it's Dot Net Nuke portal (target: .NET with MS SQL Server) with part of it being avaliable as Facebook app, but certainly not greater part of it, so the solution should be out of Facebook Connect, although it's not a showstopper if it's necessary.
We'll be giving points to users who share/like most of links that we serve in our portal and such possibility would be a great help to make a ranking.
Another option we consider is making some kind of "wrapper" or proxy for FB like / share buttons which will at first save some data in our database (probably - this user clicked on like for this link) and then go on with standard FB like / share route. Did anybody of You tried such solution?
If You have any other suggestion on the subject, please, post them, we'll be really thankful.
It is possible to know if a user has LIKED a site or not. You can get all user's likes with Graph API (you need user_likes permission). Take a look at the docs: http://developers.facebook.com/docs/reference/api/user/
I'm not sure if you can know if he has shared your site, but you could try by parsing his wall with the read_stream permission and then look for your site name/URL post by post.
For just general liking of items on your site, you can use a Facebook Social Plugin. However, you won't be able to associate (or really even access) user activity with users on your site without integrating Facebook Connect and creating a Facebook application for your site. At that point you can design with greater control all the possible user activity and interleave with your facebook calls other calls that affect users' accounts on your site.
I'm a graduate student whose research is complex network. I am working on a project that involves analyzing connections between Facebook users. Is it possible to write a crawler for Facebook based on friendship information?
I looked around but couldn't find any things useful so far. It seems Facebook isn't fond of such activity. Can I rely on the Facebook API?
Update (Jan-08-2010): Thank you very much for the responses. I guess I probably need to contact Facebook directly then. Cheers
Update (Feb-16-2011): A new book, "Mining the social web", just came out. In it, there is a chapter devoted entirely for mining Facebook using Python. Cheers.
You can't rely on the Facebook API unfortunately. To get friend information, you need to use something like friends.get(). However, any Facebook API method that returns user information like this requires that you have an active session key from that user, and generally the way you get an active session key is to have the user come to your Facebook application or page.
In summary, the information you are talking about is essentially private. You can't pick a person from Facebook, get their friends, and get those friend's friends, and so on. To me this is a good thing for privacy, but of course it prevents arbitrary analysis.
I'd throw out the idea of writing a quick and dirty application with some user appeal that you could use for research. If a group like S**t My Dad Says (funny, not really safe for work) can get 120,000 users in a couple of months, you could probably plead your case with a small research application and get a reasonable amount of users.
The problem is that facebook friendship information is typically private and only accessible to friends. It should be a lot easier to build this network on Twitter, if this is an option for you.
As others have stated, this is typically private information. If, however, Facebook per se isn't a requirement, you could use Google's Social API. A snippet from the Google Social Graph API page: "With the Social Graph API, developers can now utilize public connections their users have already created in other web services. It makes information about public connections between people easily available and useful."
Here's an article on using it in Ruby:
http://articles.sitepoint.com/article/google-social-graph-api-ruby-rails#
This lifecode post provide a basic python script to scrape your facebook friends contact info.
The output of this script, is the profile ID, profile pame, profile URL, e-mail address and mobile/phone number (if provided by friend).
WARNING: This is against Facebook TOS. Use at your own risk.
Info provided for educational and research purposes
http://ruel.me/blog/2010/11/26/scrape-your-facebook-friends-contact-info-with-python/
You can use http://www.facebook.com/directory/ to get the public listed people.