curl \
-H "Authorization: Bearer API_KEY" \
-H 'Content-Type: application/json' \
-H "X-Twitter-OAuth1-Api-Key: YOUR_CONSUMER_KEY" \
-H "X-Twitter-OAuth1-Api-Secret: YOUR_CONSUMER_SECRET" \
-d '{"profileKey": "PROFILE_KEY"}' \
-X POST https://api.ayrshare.com/api/profiles/generateJWT
const API_KEY = "API_KEY";
const PROFILE_KEY = "PROFILE_KEY";
fetch("https://api.ayrshare.com/api/profiles/generateJWT", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": `Bearer ${API_KEY}`,
"X-Twitter-OAuth1-Api-Key": "YOUR_CONSUMER_KEY",
"X-Twitter-OAuth1-Api-Secret": "YOUR_CONSUMER_SECRET"
},
body: JSON.stringify({
profileKey: PROFILE_KEY, // required
}),
})
.then((res) => res.json())
.then((json) => console.log(json))
.catch(console.error);
import requests
payload = {'profileKey': 'PROFILE_KEY'}
headers = {'Content-Type': 'application/json',
'Authorization': 'Bearer API_KEY',
'X-Twitter-OAuth1-Api-Key': 'YOUR_CONSUMER_KEY',
'X-Twitter-OAuth1-Api-Secret': 'YOUR_CONSUMER_SECRET'}
r = requests.post('https://api.ayrshare.com/api/profiles/generateJWT',
json=payload,
headers=headers)
print(r.json())
<?php
require 'vendor/autoload.php'; // Composer auto-loader using Guzzle. See .../guzzlephp.org/en/stable/overview.html
$client = new GuzzleHttp\Client();
$res = $client->request(
'POST',
'https://api.ayrshare.com/api/profiles/generateJWT',
[
'headers' => [
'Content-Type' => 'application/json',
'Authorization' => 'Bearer API_KEY'
],
'json' => [
'profileKey' => 'PROFILE_KEY', // required
]
]
);
echo json_encode(json_decode($res->getBody()), JSON_PRETTY_PRINT);
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
namespace GenerateJWTRequest_csharp
{
class GenerateJWT
{
static async Task Main(string[] args)
{
string API_KEY = "API_KEY";
string url = "https://api.ayrshare.com/api/profiles/generateJWT";
try
{
var sendData = new
{
profileKey = "PROFILE_KEY"
};
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Add("Authorization", "Bearer " + API_KEY);
string jsonData = JsonConvert.SerializeObject(sendData);
var content = new StringContent(jsonData, Encoding.UTF8, "application/json");
HttpResponseMessage response = await client.PostAsync(url, content);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseBody);
}
}
catch (HttpRequestException e)
{
Console.WriteLine($"HTTP request error: {e.Message}");
}
catch (Exception e)
{
Console.WriteLine($"Unexpected error: {e.Message}");
}
}
}
}
{
"status": "success",
"title": "User Profile Title",
"token": "ayr_ls_kJ8mQ2vX9pLnR4tYwZ6aBcD1eFgH3iJkLmN0oPqRsTu",
"url": "https://profile.ayrshare.com?session=ayr_ls_kJ8mQ2vX9pLnR4tYwZ6aBcD1eFgH3iJkLmN0oPqRsTu&domain=PROVIDED_DOMAIN",
"emailSent": true,
"expiresIn": "5m"
}
{
"status": "success",
"title": "User Profile Title",
"token": "ayr_ls_kJ8mQ2vX9pLnR4tYwZ6aBcD1eFgH3iJkLmN0oPqRsTu",
"url": "https://profile.ayrshare.com?session=ayr_ls_kJ8mQ2vX9pLnR4tYwZ6aBcD1eFgH3iJkLmN0oPqRsTu&domain=PROVIDED_DOMAIN",
"emailSent": false,
"emailError": {
"code": 333,
"message": "Email failed to send. Please confirm a valid email was provided."
},
"expiresIn": "5m"
}
{
"action": "JWT",
"status": "error",
"code": 189,
"message": "Error generating JWT. Check the sent parameters.",
"details": "Missing or incorrect domain."
}
{
"action": "JWT",
"status": "error",
"code": 188,
"message": "Both twitterApiKey and twitterApiSecret are required. You provided only one."
}
{
"action": "JWT",
"status": "error",
"code": 434,
"message": "X/Twitter API credentials were provided in both the request headers and the request body. Please use the headers only. See https://www.ayrshare.com/docs/apis/profiles/generate-jwt"
}
Profiles
Linking-URL erzeugen (generateJWT)
Erzeugen Sie eine Social-Linking-URL für ein User Profile mit dem generateJWT-Endpunkt.
POST
/
profiles
/
generateJWT
curl \
-H "Authorization: Bearer API_KEY" \
-H 'Content-Type: application/json' \
-H "X-Twitter-OAuth1-Api-Key: YOUR_CONSUMER_KEY" \
-H "X-Twitter-OAuth1-Api-Secret: YOUR_CONSUMER_SECRET" \
-d '{"profileKey": "PROFILE_KEY"}' \
-X POST https://api.ayrshare.com/api/profiles/generateJWT
const API_KEY = "API_KEY";
const PROFILE_KEY = "PROFILE_KEY";
fetch("https://api.ayrshare.com/api/profiles/generateJWT", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": `Bearer ${API_KEY}`,
"X-Twitter-OAuth1-Api-Key": "YOUR_CONSUMER_KEY",
"X-Twitter-OAuth1-Api-Secret": "YOUR_CONSUMER_SECRET"
},
body: JSON.stringify({
profileKey: PROFILE_KEY, // required
}),
})
.then((res) => res.json())
.then((json) => console.log(json))
.catch(console.error);
import requests
payload = {'profileKey': 'PROFILE_KEY'}
headers = {'Content-Type': 'application/json',
'Authorization': 'Bearer API_KEY',
'X-Twitter-OAuth1-Api-Key': 'YOUR_CONSUMER_KEY',
'X-Twitter-OAuth1-Api-Secret': 'YOUR_CONSUMER_SECRET'}
r = requests.post('https://api.ayrshare.com/api/profiles/generateJWT',
json=payload,
headers=headers)
print(r.json())
<?php
require 'vendor/autoload.php'; // Composer auto-loader using Guzzle. See .../guzzlephp.org/en/stable/overview.html
$client = new GuzzleHttp\Client();
$res = $client->request(
'POST',
'https://api.ayrshare.com/api/profiles/generateJWT',
[
'headers' => [
'Content-Type' => 'application/json',
'Authorization' => 'Bearer API_KEY'
],
'json' => [
'profileKey' => 'PROFILE_KEY', // required
]
]
);
echo json_encode(json_decode($res->getBody()), JSON_PRETTY_PRINT);
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
namespace GenerateJWTRequest_csharp
{
class GenerateJWT
{
static async Task Main(string[] args)
{
string API_KEY = "API_KEY";
string url = "https://api.ayrshare.com/api/profiles/generateJWT";
try
{
var sendData = new
{
profileKey = "PROFILE_KEY"
};
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Add("Authorization", "Bearer " + API_KEY);
string jsonData = JsonConvert.SerializeObject(sendData);
var content = new StringContent(jsonData, Encoding.UTF8, "application/json");
HttpResponseMessage response = await client.PostAsync(url, content);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseBody);
}
}
catch (HttpRequestException e)
{
Console.WriteLine($"HTTP request error: {e.Message}");
}
catch (Exception e)
{
Console.WriteLine($"Unexpected error: {e.Message}");
}
}
}
}
{
"status": "success",
"title": "User Profile Title",
"token": "ayr_ls_kJ8mQ2vX9pLnR4tYwZ6aBcD1eFgH3iJkLmN0oPqRsTu",
"url": "https://profile.ayrshare.com?session=ayr_ls_kJ8mQ2vX9pLnR4tYwZ6aBcD1eFgH3iJkLmN0oPqRsTu&domain=PROVIDED_DOMAIN",
"emailSent": true,
"expiresIn": "5m"
}
{
"status": "success",
"title": "User Profile Title",
"token": "ayr_ls_kJ8mQ2vX9pLnR4tYwZ6aBcD1eFgH3iJkLmN0oPqRsTu",
"url": "https://profile.ayrshare.com?session=ayr_ls_kJ8mQ2vX9pLnR4tYwZ6aBcD1eFgH3iJkLmN0oPqRsTu&domain=PROVIDED_DOMAIN",
"emailSent": false,
"emailError": {
"code": 333,
"message": "Email failed to send. Please confirm a valid email was provided."
},
"expiresIn": "5m"
}
{
"action": "JWT",
"status": "error",
"code": 189,
"message": "Error generating JWT. Check the sent parameters.",
"details": "Missing or incorrect domain."
}
{
"action": "JWT",
"status": "error",
"code": 188,
"message": "Both twitterApiKey and twitterApiSecret are required. You provided only one."
}
{
"action": "JWT",
"status": "error",
"code": 434,
"message": "X/Twitter API credentials were provided in both the request headers and the request body. Please use the headers only. See https://www.ayrshare.com/docs/apis/profiles/generate-jwt"
}
Erzeugen Sie eine Social-Linking-URL für ein User Profile. Der Endpunkt heißt weiterhin
generateJWT, das zurückgegebene Token ist jedoch opak und kein JWT.
Weitere Details finden Sie in der Übersicht zur Social-Verknüpfung.
Die Linking-URL ist 5 Minuten gültig. Nach 5 Minuten müssen Sie eine neue Linking-URL erzeugen.
Weitere Optionen für den Max Pack
expiresIn finden Sie hier.Dieser Endpunkt ist veraltet (deprecated). Er wird vollständig unterstützt, hat kein
Abschaltdatum und funktioniert unverändert weiter — er ist nur nicht mehr der empfohlene Weg,
eine Linking-URL zu erstellen.Das zurückgegebene
token ist ein opaker String, der mit ayr_ls_ beginnt — es ist
kein dekodierbares JWT und enthält keine lesbare Payload. Geben Sie die url unverändert
an Ihren Nutzer weiter und behandeln Sie token als Credential, das Sie speichern und
nicht inspizieren. Bereits erzeugte Links funktionieren weiterhin.POST /profiles/link-sessions führt denselben Vorgang ohne die Legacy-Parameter aus und
erlaubt außerdem, einen Link zu prüfen oder zu widerrufen. Siehe
Eine Link Session erstellen.Header-Parameter
string
Ihr X-API-Key (Consumer Key) aus dem X Developer Portal. Alternative zum Body-Parameter
twitterApiKey. Wenn angegeben, verwendet die generierte Linking-URL Ihre X Developer App für die OAuth-Verknüpfung.string
Ihr X-API-Secret (Consumer Secret) aus dem X Developer Portal. Alternative zum Body-Parameter
twitterApiSecret. Erforderlich, wenn X-Twitter-OAuth1-Api-Key angegeben ist.Empfohlen: Übergeben Sie Ihre X-Anmeldeinformationen über Header (
X-Twitter-OAuth1-Api-Key und X-Twitter-OAuth1-Api-Secret), um Konsistenz mit allen anderen Ayrshare-API-Endpunkten sicherzustellen. Die Body-Parameter twitterApiKey und twitterApiSecret werden aus Gründen der Abwärtskompatibilität weiterhin unterstützt.Body-Parameter
string
Domain der App. Bitte verwenden Sie genau die während des Onboardings vergebene Domain.Optional. Wird die Angabe weggelassen, wird die eigene Domain Ihres Accounts verwendet. Wenn Sie sie senden, muss es eine für Ihren Account registrierte Domain sein.
string
veraltet
Wird nicht mehr verwendet. Das Feld wird akzeptiert und ignoriert, sodass bestehende Integrationen unverändert weiterlaufen.Linking-URLs werden nicht mehr signiert, es gibt also keinen Key zu senden. Sie können dieses Feld entfernen und den Private Key zu diesem Zweck nicht mehr speichern.
string
erforderlich
User Profile Key. Der API Key kann in diesem Feld nicht verwendet werden.
boolean
Standard:false
Automatisches Abmelden der aktuellen Sitzung. Wird in der Produktion nicht empfohlen, da dies die Performance beeinflusst.Weitere Informationen finden Sie unter Automatische Abmeldung einer Profilsitzung.
string
Geben Sie eine URL an, zu der weitergeleitet werden soll, wenn die Schaltfläche „Done“ oder das Logo angeklickt wird. Die URL wird in der zurückgegebenen Linking-URL automatisch gekürzt. Weiterleitung des Origin-Öffnerfensters durch Hinzufügen des Query-Parameters
origin=true zur Weiterleitungs-URL.array
Geben Sie die auf der Verknüpfungsseite anzuzeigenden sozialen Netzwerke an. Dies überschreibt die auf der Seite Soziale Netzwerke konfigurierten Netzwerke.
Only display Facebook, X/Twitter, LinkedIn, and TikTok
{
"allowedSocial": ["facebook", "twitter", "linkedin", "tiktok"]
}
string
Überschreibt, welcher Instagram-Verknüpfungsablauf verwendet wird, wenn ein Nutzer auf der Social-Verknüpfungsseite für diese URL auf die Instagram-Schaltfläche klickt. Gültige Werte:Wenn weggelassen, verwendet die Verknüpfungsseite Ihre kontoweite Instagram-Login-Einstellung.Weitere Informationen finden Sie unter Instagram-Verknüpfungsmethode.
instagram: Direktes Instagram Login, keine Facebook-Seite erforderlich.facebook: Instagram über eine verbundene Facebook-Seite verknüpfen.
Force direct Instagram Login for this linking session
{
"instagramLinkMethod": "instagram"
}
boolean
veraltet
Wird nicht mehr verwendet. Das Feld wird akzeptiert und ignoriert.Es gibt kein signiertes Token zu prüfen — das zurückgegebene
token wird von der Linking-Seite geprüft, wenn Ihr Nutzer die URL öffnet.boolean
veraltet
Wird nicht mehr verwendet. Das Feld wird akzeptiert und ignoriert, da
privateKey nicht mehr gelesen wird.number
Standard:5
Legen Sie die Gültigkeitsdauer des Tokens in Minuten fest. Bereich: 1 Minute bis 2880 Minuten.Weitere Informationen finden Sie unter Link-Gültigkeit.
object
Senden Sie eine Connect-Accounts-E-Mail mit einem Link, über den Nutzer direkt auf ihre Social-Verknüpfungsseite zugreifen können.Kann die E-Mail nicht gesendet werden, erhalten Sie den Link trotzdem. Die Antwort enthält
emailSent: false und ein emailError-Objekt, sodass Sie den Link auf anderem Weg an Ihren Nutzer weitergeben können.Weitere Informationen finden Sie unter Connect-Accounts-E-Mail.Wenn Sie Ihre X-API-Anmeldeinformationen angeben, initiiert die generierte Linking-URL die OAuth-Verknüpfung mit Ihrer eigenen X Developer App. Ihre Endnutzer sehen auf dem X-Zustimmungsbildschirm den Namen Ihrer App.
Erforderlich: Bevor Sie diese Funktion verwenden, müssen Sie diese Callback-URLs zu den Einstellungen Ihrer X Developer App hinzufügen (unter Authentication settings > Callback URI / Redirect URL):
https://profile.ayrshare.com/social-accountshttps://app.ayrshare.com/social-accounts
403 Callback URL not approved fehl.curl \
-H "Authorization: Bearer API_KEY" \
-H 'Content-Type: application/json' \
-H "X-Twitter-OAuth1-Api-Key: YOUR_CONSUMER_KEY" \
-H "X-Twitter-OAuth1-Api-Secret: YOUR_CONSUMER_SECRET" \
-d '{"profileKey": "PROFILE_KEY"}' \
-X POST https://api.ayrshare.com/api/profiles/generateJWT
const API_KEY = "API_KEY";
const PROFILE_KEY = "PROFILE_KEY";
fetch("https://api.ayrshare.com/api/profiles/generateJWT", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": `Bearer ${API_KEY}`,
"X-Twitter-OAuth1-Api-Key": "YOUR_CONSUMER_KEY",
"X-Twitter-OAuth1-Api-Secret": "YOUR_CONSUMER_SECRET"
},
body: JSON.stringify({
profileKey: PROFILE_KEY, // required
}),
})
.then((res) => res.json())
.then((json) => console.log(json))
.catch(console.error);
import requests
payload = {'profileKey': 'PROFILE_KEY'}
headers = {'Content-Type': 'application/json',
'Authorization': 'Bearer API_KEY',
'X-Twitter-OAuth1-Api-Key': 'YOUR_CONSUMER_KEY',
'X-Twitter-OAuth1-Api-Secret': 'YOUR_CONSUMER_SECRET'}
r = requests.post('https://api.ayrshare.com/api/profiles/generateJWT',
json=payload,
headers=headers)
print(r.json())
<?php
require 'vendor/autoload.php'; // Composer auto-loader using Guzzle. See .../guzzlephp.org/en/stable/overview.html
$client = new GuzzleHttp\Client();
$res = $client->request(
'POST',
'https://api.ayrshare.com/api/profiles/generateJWT',
[
'headers' => [
'Content-Type' => 'application/json',
'Authorization' => 'Bearer API_KEY'
],
'json' => [
'profileKey' => 'PROFILE_KEY', // required
]
]
);
echo json_encode(json_decode($res->getBody()), JSON_PRETTY_PRINT);
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
namespace GenerateJWTRequest_csharp
{
class GenerateJWT
{
static async Task Main(string[] args)
{
string API_KEY = "API_KEY";
string url = "https://api.ayrshare.com/api/profiles/generateJWT";
try
{
var sendData = new
{
profileKey = "PROFILE_KEY"
};
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Add("Authorization", "Bearer " + API_KEY);
string jsonData = JsonConvert.SerializeObject(sendData);
var content = new StringContent(jsonData, Encoding.UTF8, "application/json");
HttpResponseMessage response = await client.PostAsync(url, content);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseBody);
}
}
catch (HttpRequestException e)
{
Console.WriteLine($"HTTP request error: {e.Message}");
}
catch (Exception e)
{
Console.WriteLine($"Unexpected error: {e.Message}");
}
}
}
}
{
"status": "success",
"title": "User Profile Title",
"token": "ayr_ls_kJ8mQ2vX9pLnR4tYwZ6aBcD1eFgH3iJkLmN0oPqRsTu",
"url": "https://profile.ayrshare.com?session=ayr_ls_kJ8mQ2vX9pLnR4tYwZ6aBcD1eFgH3iJkLmN0oPqRsTu&domain=PROVIDED_DOMAIN",
"emailSent": true,
"expiresIn": "5m"
}
{
"status": "success",
"title": "User Profile Title",
"token": "ayr_ls_kJ8mQ2vX9pLnR4tYwZ6aBcD1eFgH3iJkLmN0oPqRsTu",
"url": "https://profile.ayrshare.com?session=ayr_ls_kJ8mQ2vX9pLnR4tYwZ6aBcD1eFgH3iJkLmN0oPqRsTu&domain=PROVIDED_DOMAIN",
"emailSent": false,
"emailError": {
"code": 333,
"message": "Email failed to send. Please confirm a valid email was provided."
},
"expiresIn": "5m"
}
{
"action": "JWT",
"status": "error",
"code": 189,
"message": "Error generating JWT. Check the sent parameters.",
"details": "Missing or incorrect domain."
}
{
"action": "JWT",
"status": "error",
"code": 188,
"message": "Both twitterApiKey and twitterApiSecret are required. You provided only one."
}
{
"action": "JWT",
"status": "error",
"code": 434,
"message": "X/Twitter API credentials were provided in both the request headers and the request body. Please use the headers only. See https://www.ayrshare.com/docs/apis/profiles/generate-jwt"
}