Facebook Server-Side API (Marketing API) - facebook

First of all - sorry for my english, not my primary language.
We are trying to send some Pixel events from server (not from user browser), so we have an instructions from facebook: https://developers.facebook.com/docs/marketing-api/server-side-api
But stuck on step "Create Access Token", this section (Server-Side API for Web) is missing in Pixel's settings.
Also when we trying to make request to graph api to send some events we getting this error:
{
"error": {
"message": "(#3) This pixel is not enabled for this capability: SERVER_SIDE_EVENTS_CORE_FUNCTIONALITY",
"type": "OAuthException",
"code": 3,
"fbtrace_id": "AEWB5WGs0g_e21p2Qd1kZsX"
}
}
Is anyone managed to resolve this issue?

Mindesik,
At least before you had to be whitelisted (approved by FB) to be able to use server-side API from FB. It's usually not explicitly mentioned on the FB dev portal. If you have an FB representative for your business, try to ask them. Looking at the docs it looks quite promising, so the things might have changed.
Still, in case you've followed all the steps correctly and still getting this error this is most probably whitelisting issue that is implicitly required. The problem here is that to make FB aware of users associated with the events you send you have to send Personally identifiable information (PII) which would be a subject of strict compliance according to local laws in the EU and the US.
Here is what is says to me about debugging S2S events:

Related

Unsupported get request. Object with ID 'XXXXX' does not exist, cannot be loaded due to missing permissions, or does not support this operation

I want to use User Profile API from Facebook to get customer user data (first name, last name, picture). My app is reviewed, my app is connected to fanpage, i have pages_messaging and other permissions active. Webhooks are working correct, i receive messages from user and i can respond to them, yet when i use PSID from webhook and use it on this endpointhttps://graph.facebook.com/v9.0/{PSID} i get this error:
"error": {
"message": "Unsupported get request. Object with ID 'XXXXX' does not exist, cannot be loaded due to missing permissions, or does not support this operation. Please read the Graph API documentation at https://developers.facebook.com/docs/graph-api",
"type": "GraphMethodException",
"code": 100,
"error_subcode": 33}
Am I missing some permissions? Bad app/page configuration? I've been trying to find something in documentation but right now i'm defeated by it.
I solved the problem with getting additional permission Business Asset User Profile Access (api 8.0+).
I had the same issue, one probable reason is that you need to pass the account ID with 'act_' at the beginning of it so it becomes 'act_XXXXX'.
I was having the same issue, the main reason is that you need to pass the account ID starting with
'act_'
at the beginning
of it so it becomes
'act_XXXXX'
This resolved my issue. Hope so resolves everyone's who is coming to find solution for it.
Looks like you cannot make this request on behalf of Test User. If it is your case, try to make a call from Tester's Role user account instead.
For real life application you need Business Asset User Profile Access
There can be multiple reasons to it, you need to check the status of your account by visiting the Alerts Page on this url: https://developers.facebook.com/apps/<APP_ID>/alerts/inbox/?business_id=<BUSINESS_ID>
This alert page would show you the issue/permissions denied, for example:

/me/events - Events API

So, I've read conflicting information about this bit. But we've received complaints that users are unable to import their events in our application, although we have an approved App that has the "user_events" permission.
In short, the response when querying me/events using a user access token of the mentioned app is empty:
Edge: me/events
{
"data": []
}
Now, the funny part is, if you are a developer of the application in question, the endpoint will happily send you your own events over the API.
Is this intended behavior according to https://developers.facebook.com/docs/graph-api/reference/user/events/?
This edge is only available to a limited number of approved apps. Unapproved apps querying this edge will receive an empty data set in response. You cannot request access to this edge at this time.
Was there any communication about this? We have updated our application after they restricted the public access in May to use the user_events permission, but it looks like this access is now disabled as well, and even in a very sneaky way that makes it very hard to detect? Also, I did not read anything about this in any breaking change logs?
I'm just searching for clarification, because there is no way to properly contact Facebook regarding this issue.

product catalog api fail

need help.
I tried to start with https://developers.facebook.com/docs/marketing-api/dynamic-product-ads/ads-management/v2.3
created account. Approved it by phone.
created a business account, an ad account, an app, and so on.
linked app to ad accont like this https://developers.facebook.com/docs/marketing-api/access#standard_accounts.
Now i tried to create product catalog. i am getting same error all the time:
The app is not whitelisted to use this API
i tried to call api to cteate/list/managment product catalog.
when i did, the same by UI - i can create product catalog & feed.
but by API - all time error.
i do not understand what it need?
now try to create product set:
GET /<product_catalog ID>/product_sets/?
access_token=<my access token from app with full rights get from exploer>
{
"error": {
"message": "(#200) The app is not whitelisted to use this API",
"type": "OAuthException",
"code": 200
}
}
try to create the same:
POST : /v2.3/<product_catalog ID>/product_sets/?access_token=<my access token from app with full rights get from exploer>&name=my new prod set
{
"error": {
"message": "(#275) Ad account cannot be determined for this request",
"type": "OAuthException",
"code": 275
}
}
So what Are the changes i needed to make it work?
is it any way to made api calls work correctly?
p.s.
i guess something wrong in settings - i run unit tests in SDK - have the same situation. i have read about that problems with game app - but my app - is not a game, so i cant use solution in my situation.
if some body understand what whitelist API want - please help!
Thanks.
Hopefully this helps someone else: I was also trying to create a Product Catalog via the API in Development, and got "The app is not whitelisted to use this API".
I solved it by creating an admin system user, and generating an access token with the business_management permission.
The error is explained by the documentation you linked to - unless your app is approved for Standard access to the API it can only access a specific number of ad accounts and those accounts need to be pre-configured in the app settings
Many of the business manager APIs can't be used because they're not tied to one of those pre-specified accounts (hence the Ad account cannot be determined for this request error).
In general, the business manager APIs likely won't work for you until your app has access at the standard level, though some will if they're account-specific
You can't be an app admin and a tester/developer at the same time. You should create another facebook account for tests.
This happens also when the access token used is not from your app which has Standard Access. Also, note the dev version of the same app will not work.

getting started with google directory API and device management

Heyy, I was looking into Google apps for business and playing with the API explorer ... I have a reseller account with google let's say stack#reseller.goteam.com and this works for creating users, org units, subscriptions and so.
I want to start with the device management and investigating on these things:
1) How do I know my customerId from google cpanel ... I am looking to know how to see the info required for these requests in CPanel.
2) I am getting the below error:
400 Bad Request
- Show headers -
{
"error": {
"errors": [
{
"domain": "global",
"reason": "badRequest",
"message": "Bad Request"
}
],
"code": 400,
"message": "Bad Request"
}
}
In my request, I entered "goteam.com" as customerId..... Isn't this correct? any good posts on getting started with device management.... Please help
there are 2 basic ways to determine what customerId you need to use:
Just use my_customer, this will use the customerId of the user you authenticated as. This works perfect when working with your own domain but will not work when when you are a reseller trying to access one of your customer's domain data.
Use the users.list() API call to determine the customerId. Specify the domain, a maxResult of 1 and that the only field you want back is customerId. Here's what it'd look like in the API Explorer.
The customerId is not your domain, it's a unique ID that looks like random characters.
Lastly, you should be aware that resellers currently can't make device management requests for customers (see note near top).
I agree with Jay. Currently resellers cannot utilize the Directory API on behalf of their customers. The Provisioning API does however, work.

What are the possible causes for Facebook's "Error validating application"?

My application uses Facebook's Graph API to pull user's information via /me, /wall, and so forth.
Sometimes users run into the error:
"error": {
"message": "Error validating application.",
"type": "OAuthException",
"code": 190
}
I can't find any reasons why this might be triggered as:
Access token is valid, never-expires, and is associated to my
application.
I got the permissions to do the API calls
API calls works fine afterward
In this condition, what might cause this?
Assuming you're receiving this error only for a small percentage of requests, you shouldn't need to do anything - the error happens when the provided access token is being checked for validity and the app's details can't be verified - usually an intermittent problem affecting only a tiny percentage of requests (unless you're forgetting to include the app ID in your SDK initialisation, in which case check that first)