waarom krijg ik “Ongeldige appsecret_proof opgegeven in het API-argument”

Sinds de laatste wijziging op Facebook, met betrekking tot de appsecret_proof: https://developers.facebook .com/docs/reference/api/securing-graph-api/, we zijn nog steeds niet in staat om prestatierapporten te downloaden, zelfs niet na het in-/uitschakelen van functies via Geavanceerde instellingen in onze app, of het toepassen van de code zoals beschreven in hun document .

We krijgen constant deze foutmelding:

{“error”:{“message”:”Ongeldige appsecret_proof opgegeven in het API-argument”,”type”:”GraphMethodException”,”code”:100}}

en ik heb een vertrouwelijke bug geopend, maar niemand komt bij mij terug met een antwoord.

Ik weet echt niet wat we nog meer kunnen proberen?


Antwoord 1, autoriteit 100%

De fout is (gebaseerd op mijn ervaring) vrijwel zeker correct; het betekent dat je een ongeldige appsecret_proof bewijst met je API-aanroep

Ervan uitgaande dat u de standaard PHP SDK gebruikt zonder aanpassingen, zijn de meest waarschijnlijke redenen hiervoor:

  • Je hebt de verkeerde app-ID geconfigureerd in de SDK-code
  • Je hebt het verkeerde app-geheim geconfigureerd in de SDK-code
  • Je probeert een toegangstoken van de verkeerde / een andere app te gebruiken

Antwoord 2, autoriteit 34%

Een andere mogelijke oorzaak van de “Ongeldige appsecret_proof …”-fout is een gebruikerstoegangstoken dat niet aan een app is gekoppeld. Als u een gebruikerstoegangstoken genereert met behulp van de grafiekverkenner, zorg er dan voor dat u een app selecteert in de vervolgkeuzelijst in de rechterbovenhoek. Anders genereer je tokens die alleen werken binnen de Graph API Explorer.

Ik heb een bug ingediendmet de Python SDK voordat ik begreep mijn fout. GUI’s zijn de duivel.


Antwoord 3, autoriteit 18%

Geen bug in de nieuwste versie van de facebook PHP SDK.
U moet appsecret_proof maken volgens de documenten:

$appsecret_proof= hash_hmac('sha256', $access_token, $app_secret);

geef het dan als parameter door aan je API-aanroep.

Bekijk de documenten hier: https://developers.facebook.com/ docs/graph-api/securing-requests/

Toen ik dit eenmaal deed was alles goed en hoefde ik base_facebook.php niet te hacken


Antwoord 4, autoriteit 16%

Er zit een fout in de Facebook SDK. Na 20 uur van alles geprobeerd te hebben om mijn eigen code te debuggen (wat geen problemen had!), becommentarieerde ik dit in base_facebook.php:

/* Commented out by SJ 
    if (isset($params['access_token'])) {
      $params['appsecret_proof'] = $this->getAppSecretProof($params['access_token']);
    }
*/

En alle problemen verdwenen!


Antwoord 5, autoriteit 5%

Dit is een fout vanwege het juiste token. Het kan zijn dat u een ander account gebruikt voor het configureren van de web-app en de mobiele app voor Facebook-configuratie. Beide accounts moeten hetzelfde zijn.

De app-ID moet hetzelfde zijn voor uw mobiele app en uw web-app.


Antwoord 6, autoriteit 2%

Deze fout is het gevolg van het instellen van een onjuist toegangstoken. Voor bijvoorbeeld posten op een pagina-album met behulp van het toegangstoken van een gebruiker (admin). Ik heb deze fout bijna altijd opgelost door het juiste toegangstoken in te stellen


Antwoord 7, autoriteit 2%

Als deze fout onverwacht gedrag is, heeft u mogelijk een instelling in uw app aangevinkt om dit te vereisen. Schakel het uit en u zou die fout niet meer moeten krijgen. Die instelling staat in instellingen -> geavanceerd en heet “App Secret Proof for Server API calls”. Zet dat op NEE.

Vanaf nu staat die instelling op deze pagina (zorg ervoor dat je je appId in de URL plaatst): https://developers.facebook.com/apps/YOUR-APP-ID/settings/advanced/

Let op: dit is geen universele oplossing, alleen een oplossing voor mensen die dat gedrag niet willen.


Antwoord 8, autoriteit 2%

Voor mij waren het drie correcties waardoor het werkte

  1. Activeer de geheime app en toegang tot API in de geavanceerde configuratie van je app in Facebook voor ontwikkelaars. Hoewel het voor mij in theorie niet nodig is, gaf het altijd aan dat de appsecret_proof nodig was, zelfs als die twee opties waren uitgeschakeld.

Configuratie Geavanceerde opties van uw app

  1. Bij het maken van de appsecret_proof, moet het access_token dat is gebruikt om het te maken hetzelfde access_token zijn om het verzoek in te sturen, en het is het access_token van de gebruiker, mijn fout was dat ik de app access_token gebruikte. Gebruik de gebruiker access_token.

  2. Stuur de parameter appsecret_proof als appsecret_proof, niet als app_secret_proof. Een klein detail, maar is mij overkomen.

Extra:
Voor python kun je de appsecret_proof als volgt maken:

import hmac
import hashlib
facebook_app_secret = '<your_app_secret>'
facebook_access_token = '<your_user_access_token>'
appsecret_proof = hmac.new(facebook_app_secret.encode('utf-8'),
                           msg=facebook_access_token.encode('utf-8'),
                           digestmod=hashlib.sha256).hexdigest()
print(appsecret_proof)

Gekregen van facebook Graph API-aanroepen met appsecret_proof in python


Antwoord 9

zorg ervoor dat uw instelling correct is fbappid + fbappsecret

deze fout treedt op wanneer deze niet correct zijn ingesteld

alsof je 2 apps hebt, één ontwikkeling en één productie

en je verknoeit de codes, controleer die twee nog eens


Antwoord 10

Alleen voor mensen die hetzelfde probleem hebben;

Als je Client OAuth Logininstelt op “ja” op Facebook, moet je de juiste Geldige OAuth-omleidings-URI’sgeven. Anders geeft Facebook precies dezelfde fout.


Antwoord 11

In mijn geval moest ik de standaardtoegangstoken instellen via de methode: setDefaultAccessToken()

Ik heb een token gebruikt die is gegenereerd in de GraphApi-dev-tool, maar ik ben niet overgeschakeld naar de juiste toepassing. Het werd opgelost door de applicatie in de juiste te veranderen en een geregenereerd token te gebruiken.


Antwoord 12

Ik weet dat dit een oude vraag is, maar ik heb de mijne opgelost door de toepassing te wijzigen in de juiste toepassing waarmee ik een toegangstoken zou moeten genereren. bijv. van Project1tot Project2.


Antwoord 13

voer hier de afbeeldingsbeschrijving in
Misschien is er iets mis met je toegangstoken, je hebt de stijl van Bedrijfsmanager nodig.
U kunt de token ophalen uit de inhoud van https://business.facebook.com/settings/ system-users/{sys_user_id}?business_id={business_id} met regex r'"accessToken":"([\d|\w]+)","context"'


Antwoord 14

Werkt voor mij:

$appsecret_proof = hash_hmac('sha256', $facebook_page_token, $app_secret);

WAAR facebook_page_tokenhet paginatoken is dat is opgeslagen in mijn database en wordt gemaakt wanneer ik de pagina aan de app koppel.


Antwoord 15

Probleem komt van verkeerde platformtoegangstoken.

U moet uw dashboard controleren dat u verkiest boven API en uw toegangstoken controleren waar het vandaan komt.

Other episodes