Facebook graph api doesn't return currency - facebook

I have problem getting user local currency and usd-exchange rate from facebook, so this one: https://developers.facebook.com/docs/graph-api/reference/currency/
I'm trying to show my shop prices in local currency, just like fb shows prices in local currency in its own purchase dialog after facebook-purchase is launched.
I'm trying to get currency like this:
https://graph.facebook.com/v2.12/me?fields=id,name,currency&access_token=...
(Actually using Unity and Facebook's Unity SDK to do this, but exactly same thing happens when using url above.)
That have definitely worked before. I've also tried api version 3.2. It returns id and name, but no currency info of any kind. But it doesn't give any error message either, as it does with invalid fields.
I really can't find any useful info or help to this. Does getting currency require special permissions these days? But I can't find anything currency related from FB dev console App Review / Permissions and Features either.
Thanks!

Answering to my own question. It just seems that currency info is no longer available.
Starting from January 8th (2019) that field is no longer available for any apps:
https://developers.facebook.com/blog/post/2018/05/01/facebook-login-updates-further-protect-privacy/
There's discussion about this issue here, without any solution so far (may require having FB developer account to access):
https://developers.facebook.com/bugs/285780305453757/
There are some workarounds to get user currency like:
New way to detect Facebook API user currency
But that doesn't give you exchange rate to USD, so that isn't too helpful showing prices in local currency before Facebook's own purchase dialog is displayed.
Very unfortunate. Still, if someone knows way to get local currency and exchange rate that will surely match exchange rates used by FB, please let me know.

Related

Why "Fbclid" is not enough for attribution?

I've been tormented for a few months by this question!
I don't understand how Facebook pixel works deeply (and I assume only FB devs Know) but I have a few questions, if anyone can help me:
1- I launch a conversion campaign on Facebook ads, a specific ad gets a click, and a unique "fbclid" gets attributed to that click (?); if a conversion happens, and I send back the fbclid, Isn't Facebook supposed to be able to attribute it to the specific ad that generated that click, thus that fbclid? I thought that was the whole point of having a Server-to-server solution? since Apple announced iOS updates blocking cookies?
I come from an affiliate marketing background, we use tools like "Everflow" to track affiliate links, with a "transaction_id", that is, a unique value generated on every outgoing click. I thought the same logic would apply to fbclid.
Why are we asked to pass back to Facebook so much data when a conversion happens, like a name, email, etc... to be able to attribute the conversion to a campaign
( AND EVEN SO! Our Tracking is only 80% Accurate!!)
2- Can anyone explain how Facebook pixel actually works ? ignoring the Server to server (Conversion API ) solution, how does the Facebook base code + the conversion event script work to be able to attribute a conversion to a specific campaign? does it store the fbclid in your cookies? and when a conversion happens execute a request to Facebook?
3- AM I talking about 2 Different things here: FB attribution to campaigns VS Event matching? are they the same concept? Why is this so confusing to me? I couldn't find someone that's asking the same question, is it because I am missing something very obvious?
Thank you in advance!!

How can I get owner email for a Facebook App using the App Access Token

How would I get the email address associated with an active Facebook App ID, if all the usual methods (such as here, and here) don't return any email information with my creator-uid?
(I simply don't get the email field returned, even when I specifically request it as per here. I don't think this is a case of this as I didn't get an "App has no owner" error, or any error whatsoever.)
I've also tried this, but I'm in a catch-22 as I can't log in to select the application first.
I'm looking for the owner email address, so I can log in to make administrative updates following graph API updates.
Other specifics:
I get the following when I hit the Graph API via: https://graph.facebook.com/{my-app-id}?access_token={my-access-token} or https://graph.facebook.com/{my-app-id}?access_token={my-access-token}&fields=email
{
"name": "my-name",
"id": "my-creator-uid" }
I've tried to recover my FB account using all emails I can think of, but FB says 'no account exists' for each that I try. (This is a data-analytics corporate account being used to gather data for 12+ months, so I can't simply create a new account/app ID and start using that instead, as app-scoped user IDs will change.)
I've also tried viewing https://www.facebook.com/app_scoped_user_id/{my-creator-uid}/ and https://www.facebook.com/{my-creator-uid}/ from another company FB account, but both get:
Sorry, this content isn't available right now The link you followed
may have expired, or the page may only be visible to an audience
you're not in.
What else would you suggest? What might have happened? I've tried to contact Facebook, but that search led me to this forum post, so I'm here. Thank you in advance for your help.
This is not a programming question, try to get in touch with the Facebook Team, if you are working with Facebook paid services (like Advertising) you might have an account representative that can accelerate the things a little bit (But this can be a really long wait).
A more realistic option is to create a new profile and an new app, also your application will be reviewed as well (Take a little less time than previous option).

How to stop spam accounts

I have a web site using Facebook Connect where people have a strong incentive to create fake Facebook accounts and login multiple times in order to get more "votes" in my singing competition.
Anyways, I've come up with a strategy to identify these fake accounts and not let them use my site. (Haven't done the programming yet)
If their earliest wall post is more than 30 days old, then validate them.
If they have more than 20 friends, then validate them.
If their first profile picture is more than 30 days old, then validate them.
If their account has been phone verified, then validate them.
Number 4 is the one I'm having trouble with. One post I read says the GRAPH API has a verified field, but suggests that shows if the email has been verified (but not phone). This has proven a tough thing to search for. So I'm still unsure if this is possible.
Any comments on my strategy or help with #4 would be appreciated.
Thanks.
Actually the verified field should be what you are looking for. From the docs:
A user is considered verified if she takes any of the following
actions:
Registers for mobile
Confirms her account via SMS
Enters a valid credit card
We use verified and friend count to limit people. We even put those requirements into our legal terms so there's no misunderstanding.

Facebook Developer Account Verify

I created a new Facebook account and verified it with my cell phone. I even see "Your mobile phone has been successfully verified." in https://www.facebook.com/confirmphone.php address.
So, everything seems perfect.
Then, I became Facebook friends with my friend (he is also verified and already created an Application). We are trying to add ME as an ADMIN for this Facebook Application from HIS account.
Even though both are completely verified by phone, HE canNOT add me as ADMIN for that application. He is getting
Only verified developers can be added as listed developers of this application. Read http://www.facebook.com/help/?faq=17580 for details.
message all the time.
We waited more than an hour just in case the Facebook system did not recognize my new verification.
In fact, I even tried removing the phone number and get verified again.
None of above did work and still getting the message which does not allow me to become an Admin of the application.
Could you help me?
Thanks in advance
I've heard of people having all kinds of problems with the developer section of Facebook.com
One resolution seems to be to log out of both accounts and log back in again.
It turns out that, facebook itself does not accept my account and thinks it is duplicate account. And in order to make them believe the Facebook team want me to provide these below:
Our systems indicated that your account may not be authentic based on
a variety of factors. If you believe you are being prevented from
creating apps by mistake, please reply to this email with a digital
image of your government-issued identification. Make sure the
identification you provide meets all of the following requirements:
Must be government-issued (e.g. passport, driver's license)
Must be in color
Must clearly show your full name, date of birth, and photo
If possible, please save this file in JPEG image format.
I dont know why they are making such a huge problem.
In my case, I used phone number to login my account and hadn't any email attached. after adding email as a primary contact I was able to verify my developer account.

Facebook Connect: proxied_email not always returned by users_getInfo

Today I realized that FB Connect does not return the proxied_email field in about 4 out of 5 times. (I can reproduce this with a single users repeatedly, so this obviously does not have anything to do with privacy options or permissions)
It definitely worked fine last week ago.
I could not find any official info that this field is going to be removed or anything, so...
Does anybody else have this problem? Is there anything I am doing wrong that could be causing this behavior? Or is Facebook just having a bad day?
I did the following quick fix:
$personArray = $facebook->api_client->users_getInfo( $fb_config->user_id, "last_name, first_name, birthday, hometown_location, current_location, is_app_user, proxied_email" );
$email = $personArray[0]['proxied_email'];
if(empty($email)){
echo 'Proxied email was not retreived. Trying fql query...';
$facebookFQLResultXml = $facebook->api_client->fql_query("SELECT proxied_email FROM user WHERE uid=".$fb_config->user_id);
$email = $facebookFQLResultXml['proxied_email'];
}
I'm going to posit that it's just one of those Facebook days. There is supposed to be a big change this month that will change the way developers interact with users. Notifications will be removed, etc. Facebook is going to allow full access to a user's real email address (with the user's permission), and remove the proxied email system.
However, the official word is that the email proxy system should still be supported. According to http://wiki.developers.facebook.com/index.php/Roadmap_Email, users who have already granted proxy email permissions will continue to be available. However, it doesn't say anything about new users, so perhaps they have removed the email addresses for those that did not grant permission?
I noticed that they put the new privacy controls in place today, so it could be they made a change to the proxy at this time.
The same thing happened to me too. In the Facebook Connect JS API the proxied_email works about 80% of the time, but in the Facebook Developer Toolkit (for .NET) it barely works at all (which is strange cause I think they use the same facebook api under the hood).
This probably could have something to do with the somewhat failed privacy settings introduced the other day, as the whole proxy email functionality is related to facebook privacy (as zombat mentions above)? According to http://developers.facebook.com/live_status.php, the API seems to be under a fair amount of stress at the moment, cause it's acting a bit sluggish.
Do these things happen often? Where the facebook team either decide to just change the implementation overnight or where the service more or less nosedives?
It seems that the data returned by users_getInfo doesn't longer contains the proxied_email value
You can't circumvent the problem with FQL:
$aResult = $facebook->api_client->fql_query("SELECT proxied_email FROM user WHERE uid=$fbUid");
$sFbMail = $aResult[0]['proxied_email'];
I'm using the Facebook .NET Developer Toolkit and think it's just a bit buggy, which is why it didn't always work. In the end I also worked around the problem using FQL which worked really well (with a touch of XPath)