Var Facebooks client token hör hemma i en Flutter-app

Senast uppdaterad 7 augusti 2026

Vad client token är

Client token identifierar din app när Facebook SDK anropar Metas endpoints på appnivå. Metas egen formulering: client tokens "identify your app when calling app-level APIs from native or desktop apps", och de kan inte användas på egen hand, eftersom "you must combine them with your App ID by appending the token to the end of the App ID, separated by a pipe symbol". SDK:t gör den sammanslagningen för dig. Vad det inte kan göra är att gissa något av värdena.

Det är inte ditt app-id. Två olika värden, två olika konfigurationsnycklar, och SDK:t behöver båda. Klistrar du in app-id:t i nyckeln för client token har appen ingen giltig client token, och det misslyckas på exakt samma sätt som om nyckeln hade utelämnats: i tysthet.

Du behöver inte gömma den. Meta säger det rakt ut: "Because client tokens are embedded in apps, they are not secret." Den levereras inne i din app-binär av design, så den kan ligga i ditt repo tillsammans med resten av din plattformskonfiguration.

Var du hämtar den

I App Dashboard, för den app du vill att händelserna ska landa i. Metas dokumentation för client tokens anger vägen: i Dashboard, gå till Settings > Advanced > Security > Client token.

Kontrollera vilken app du har öppen innan du kopierar. En client token från en annan app i samma företagskonto ser fullt rimlig ut, klistras in utan invändningar och fungerar inte.

Android behöver två filer, inte en

Här går tiden. Token måste ligga i en strängresurs, och manifestet måste peka på den resursen. Det ena utan det andra gör ingenting.

Strängresurserna

I android/app/src/main/res/values/strings.xml, eller motsvarande fil för byggvarianten debug eller release:

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <string name="facebook_app_id">[APP_ID]</string>
  <string name="facebook_client_token">[CLIENT_TOKEN]</string>
  <string name="fb_login_protocol_scheme">fb[APP_ID]</string>
  <string name="app_name">[APP_NAME]</string>
</resources>

Referenserna i manifestet

Strängresurserna räcker inte i sig. Vad SDK:t läser är posterna meta-data i AndroidManifest.xml, och de posterna är det som refererar dina strängar. Utelämnar du dem ligger värdena kvar i dina resurser utan att någonting slår upp dem.

Båda hör direkt under <application>:

<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
<meta-data android:name="com.facebook.sdk.ClientToken" android:value="@string/facebook_client_token"/>

Har du lagt in strängarna och stannat där är det din bugg, och ingenting i bygget eller loggarna pekar på den.

Fällan med byggvarianter

Har din app byggvarianter (build flavors), kontrollera vilken strings.xml du redigerade. En variants resurskatalog skriver över den gemensamma, så en client token som placerats i fel variants fil finns helt enkelt inte i det bygge du kör.

Den här gömmer sig väl. Filen du har öppen på skärmen är korrekt. Värdet står där, rätt stavat, i en fil som finns. Det ingår bara inte i den resursuppsättning som ditt installerade bygge sattes samman av.

Bygg den variant du testar och kontrollera sedan det sammanslagna manifestet och de sammanslagna resurserna som bygget producerade, i stället för källfilerna du redigerade. Det är den kontroll som besvarar frågan.

Varken detta eller posterna i manifestet finns i Metas dokumentation för client tokens, och inget av det är en kritik av den: sidan beskriver SDK:t generiskt, för alla plattformar som bygger in det. Båda fällorna ligger i det Android-projekt som Flutter-verktyget genererar för dig, och det är den delen ingen dokumenterar.

iOS: Info.plist

En fil, och ingen omväg att göra fel på. Allt hör hemma i Info.plist:

<key>CFBundleURLTypes</key>
<array>
  <dict>
  <key>CFBundleURLSchemes</key>
  <array>
    <string>fb[APP_ID]</string>
  </array>
  </dict>
</array>
<key>FacebookAppID</key>
<string>[APP_ID]</string>
<key>FacebookClientToken</key>
<string>[CLIENT_TOKEN]</string>
<key>FacebookDisplayName</key>
<string>[APP_NAME]</string>

Två av nycklarna är relevanta för den här sidan: FacebookAppID och FacebookClientToken. Resten av blocket är standardkonfigurationen för Facebook, återgiven här så att du kan jämföra den med vad ditt projekt redan har.

På iOS finns ingen omväg av manifest-typ. Värdet ligger direkt i den nyckel SDK:t läser.

När token är fel

Ingenting säger till. Appen byggs. SDK:t initieras. logEvent returnerar utan fel. Events Manager förblir tom.

En saknad eller felaktig client token är en av de vanligaste orsakerna till att händelser aldrig kommer fram, och den ger ingen signal alls på anropsstället. Jämför värdet tecken för tecken mot App Dashboard innan du letar någon annanstans.

Stämmer token och händelserna ändå inte landar går nästa sida igenom resten i ordning, konfiguration, sedan transport, sedan attribution, så att du slutar gissa vilket lager du är i: Facebook-händelser syns inte i Events Manager.

Kontrollera din uppsättning

  • Client token i din app matchar Settings > Advanced > Security > Client token för samma app i App Dashboard
  • Android: facebook_client_token är satt i strings.xml för den byggvariant du faktiskt bygger
  • Android: posten com.facebook.sdk.ClientToken finns som meta-data under application-elementet i AndroidManifest.xml
  • Android: du har kontrollerat det sammanslagna manifestet och de sammanslagna resurserna från bygget, inte källfilerna du redigerade
  • iOS: FacebookClientToken är satt i Info.plist
  • App-id och client token ligger var och en i sin egen nyckel, och inget av värdena har klistrats in i det andras

Metas referensdokumentation

API-referens för pluginet

Fortfarande fast?

Det är en defekt i pluginet

Om pluginet gör något som det nativa Facebook SDK:t inte gör, då är det vår bugg. Öppna ett ärende och vi åtgärdar det. Gratis, alltid, utan villkor.

Öppna ett ärende på GitHub

Det är en användningsfråga

Frågor om konfiguration och integration ställs bäst där andra utvecklare kan hitta svaret senare.

Fråga på StackOverflow

Dina siffror är fel och pengar rör sig

Om Meta-installationskampanjer spenderar och attributionen inte går ihop, då är det ett annat problem än en trasig build. En timme, 300 USD, som krediteras mot granskningen om du går vidare.

Se diagnossamtalet och granskningen

Relaterade guider

Google Cloud Partner

Berätta om ditt projekt