How to connect FB page-app ID with a user profile link - facebook

To summarize the issue shortly, I am making a web-app which allows users to register on my website and manage their social media profiles from there. This is not intended for private users, but rather for business pages.
Now let's say John owns a hotel.
John registers himself at my web-app, connects his facebook, twitter and whatnot to it and makes some post about a discount price for the summer.
Bill sees the post on facebook page (since he is an avid follower of John's hotel) and comments on it. Bill also sees John's tweet and being a creep that he is, comments there as well.
In my app, all the people that register have a "customer list". This list represents people that interact with any of their social media pages, this list is easy to populate, however, Bill on twitter and Bill on facebook, whist being one person in reality, have no connection on this list. Since John's facebook page-app ID for Bill is 123456, whilst twitter's is 7890112, and since API doesn't give us any unique identifier such as an email or a profile link, rather only the name and an ID, how would I "connect" the two Bills?
Also, mind you, it is not an issue of cross-social media connecting...
Lets say I can force bill to come to my website and leave me a link of his facebook profile, facebook.com/profile/billTheCreep. I still cannot connect this profile to john's facebook page-app related id for Bill (123456) because that number and the name "Bill" is the only info a facebook page gives me. Forget for a moment the whole cross-social media issue, how does one take the app and connect the page-app unique id to a real user, not just an arbitrary name?
Is there even a way?

Related

Understanding the Facebook Audiences API

I'm looking to set up the Facebook Audiences API into my PC game but I'm a bit confused about how Facebook matches this to a real-world user.
I don't collect any user data in my game other than a unique userID. If I use the "External Identifiers" example in the FB documentation and push the userID back to Facebook, how does FB then match this to a Facebook user? Do they just collect IP address from the payload and use the userID to find a unique user or something else?
Thanks in advance.
Unless players of your game can use their facebook accounts to create user id's for your game, it is unlikely that you will be able to create audiences based on this data. Facebook isn't interested in the usernames of people who play your games, they would have no reason to store this information.
One thing you could do is allow players to create an account by signing in with their facebook id. This would let you put them on an advertising list, without having to try to match up user names to a game that facebook doesn't know about.
Here's a link to a quick start for Facebook Connect, which would allow you to do what I detailed above.
https://developers.facebook.com/docs/javascript/quickstart

Is Facebook now anti-social, or is there hope for connecting users with their friends via API?

My latest project has (had) a requirement for the user to invite their friends to their online service. I discovered that, apparently, as of April 2015 with the new v2.0+ Facebook Graph API, you cannot actually get a list of friends for the user, unless those friends are already subscribed members of your app.
The scenario:
My app is a web service that lets the user collaborate on research work in a private group online. The user needs to
look up their list of friends,
set permissions their friend will have in the group, and
send them an invitation both join the service, and the specific group. (using a unique, one-time use link tied to each recipient)
The user would (ideally) receive an invitation with a specific link for them to not just become a subscriber of said online app, but specifically to join the group they were invited to (i.e. not just a generic "hey, check out this app" type of invitation).
The expectation:
The user doesn't care whether their friend is already a member of "MyApp.com". They expect to simply look up their friends just like they do today from their phone when they connect it to Facebook (makes all contacts available, regardless of whether those friends connected their Facebook to their phone, respectively). Likewise, compare inviting members to your Google docs, for example: look up your contact, set permission, send invite - so easy. Users demand this UX simplicity today and do not distinguish or care whether they are dealing with email, Facebook, Twitter contacts, whatever.
The problem:
The entire point of a social network is to be, well, social. If the Graph API only lets my app access friends that are ALREADY users of my app, it completely defeats the entire purpose - it cuts my user off at the knees, kills UX, no more ability to actually contact their own friends. My understanding is Facebook made this change to prevent developers from spamming users, and I get that, I completely support that. HOWEVER, my company and my app are not the ones that are trying to invite friends for it's own purposes, it is the USER and THEIR OWN friends that THEY have the right to access and converse with for their purposes (or so you'd think). Beyond just friends list, even if I had that, I think there are additional hurdles and limitations with posting messages to friends, even private (not wall) messages, which again would be anti-social.
The Question:
Am I understanding Facebook limitations properly, and if so, what is the work-around? I'd be ok with such an API being locked down until you pass a review that proves you aren't spamming users, but I did not see such an option.
Facebook supposedly prioritizes users over developers, and these changes were made because if the user is not comfortable with privacy (don't spam my friends), then they wont be users any longer, and that obviously affects developers and Facebook. OK, but did they not realize that by locking it down this extreme just killed UX for the user in legitimate scenarios? And to my original point, not just a little, but paramount - the result quite literally is that on April 30, 2015, Facebook became anti-social. Surely this is not inline with their mission. Surely there is a better approach.
If your app is not a game (which I assume), the only viable option would be the Message Dialog as desribed at
https://developers.facebook.com/docs/apps/faq#friend_invite
If your app is not a game and has a mobile or web presence:
You can also use the Message Dialog on iOS and Android, or the Send Dialog on Web. These products let a person send a message directly to their friends containing a link to your app. This type of message is a great channel for communicating with a smaller number of people in a direct way. The Message Dialog and the Send Dialog both include a typeahead which lets the person easily select a number of friends to receive the invite.
You might also find App Invites useful but I beleive it's only for iOS and Android apps and might not exactly fit your use case:
https://developers.facebook.com/docs/app-invites
App Invites are a content-rich, personal way for people to invite
their Facebook friends to a mobile app.

Can I use an app user's friend public data (id, name, gender) in other app users app context

I am developing an app in which I want a user (Alice) to send a list of few of her friends to one of her other friends (Bob). Bob is not a friend of the people on Alice's list.
The list that will be displayed to Bob will contain only public data that can be queried from facebook by the ids of the friends on the list. Meaning, I will only save the ids of the friends.
Is what I'm planning in accordance with the Platform Policies? and particularly with sections 2.4:
A user's friends' data can only be used in the context of the user's experience on your application.
and 2.11:
You cannot use a user’s friend list outside of your application, even if a user consents to such use, but you can use connections between users who have both connected to your application.
If you provide that information inside your app context I see no problem... Meaning If in your app you sugest the Alice Friends to Bob you'r OK.
It's been done time and time again...
Seems like you may be looking for Facebook's friend suggest dialog, which is part of their API. Facebook will suggest and send a friend request on your behalf.
https://developers.facebook.com/docs/reference/dialogs/friends/

How can users use their email accts to look for friends on my site?

I'm working on a new social networking site and I want to give users a way to:
1) Automatically scan my site for people they already know (email/linkedin/facebook/etc)
2) Provide users with the option of inviting their friends to join the site
It seems like many of these tools have their own api, but in most cases it doesn't look like I would be able to get a unique id (the email, basically). Are there other tools out there I could/should look at?
I implemented this on one of my sites. When users register for an account, I require an email address. I give them an option to find their email accounts (gmail, hotmail, aol, and yahoo all have oauth services you can use to get contacts). I also give them the option for LinkedIn, Facebook, and Twitter. This doesn't work as well as those 3 social networks won't disclose email addresses (and rightfully so). So each user that authenticates, I log their id from that service. Then I get the id's of their friends, and see if any of those friends have associated their account with my site. The key for this to work is to encourage your users to associate those accounts.
As for Facebook, unfortunately this is not possible using email since users may choose not to share their real email with you.
One way, for Facebook, is to store the Facebook user id (you should be doing this anyway) and retrieve the newly registered user friends' ids and check if any of these ids present in your DB.

Best UI/design patterns to find my users' friends who are also my users

What's a good design pattern to find my app's users' friends (facebook, linkedIn, twitter), etc who are also configured with my app?
Eg, my party app has party organizers. The organizers add party people by name/email. Later a party person logs in via Facebook. I want to show her which of her friends will also be at the party.
Should I
send an email to ALL party people, asking them to login to my app via FB, Twitter, LinkedIn? I'd send the email as soon as I get the email address. That way, later, when someone logs in, I can exactly match by FB/LinkedIn id and tell the user which of their friends/connections is also attending the party
When a person logs in via LinkedIn, FB, show just the friends/connections of others who have previously logged in. (Can't verify FB/LinkedIn friends by email, just by id. So need to wait until my app has learned the FB/linkedIn id of the other person when they logged in.)
When a person logs in via LinkedIn, FB, show the friends/connections that MAY be attending the party? -- By doing a match on fname/lname? This method doesn't require that the friend has already logged into my app, but does mean that I could say that "Your friend Jim Jones may be the same as the Jim Jones who is attending the party"
Any good examples of this design pattern?
Thanks,
Larry
That's a tricky situation. While you want your users to have a good user experience by knowing which of their friends will be attending the event too, you also want them to have a good experience by making it as simple as possible for them to register for the event.
What I would suggest would be to make it optional. Put a find friend who are attending now button/image on the main page they see in your app. The graphic should be something that draws their attention and really makes them want to spend the extra effort to find out. Then from there give them dialog that asks which of the three social networks they want to look for. Then iterate thru each of the ones the user has chosen prompting for app access. Store each of the user id's and access tokens from the various social networks in your database under the same user in your database. (don't query on first/last ... that's not a good option...just use each network's unique identifier)
Of course the first user to do this will have the worst experience since none of the other people have done this. But it gets better with adoption.
Good luck on your project!