curl --request POST \
--url https://sdk.anghami.com/v1/auth/token \
--header 'Content-Type: application/json' \
--data '
{
"code": "<string>",
"redirectUri": "<string>",
"clientId": "<string>",
"codeVerifier": "<string>"
}
'import requests
url = "https://sdk.anghami.com/v1/auth/token"
payload = {
"code": "<string>",
"redirectUri": "<string>",
"clientId": "<string>",
"codeVerifier": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
code: '<string>',
redirectUri: '<string>',
clientId: '<string>',
codeVerifier: '<string>'
})
};
fetch('https://sdk.anghami.com/v1/auth/token', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://sdk.anghami.com/v1/auth/token",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'code' => '<string>',
'redirectUri' => '<string>',
'clientId' => '<string>',
'codeVerifier' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://sdk.anghami.com/v1/auth/token"
payload := strings.NewReader("{\n \"code\": \"<string>\",\n \"redirectUri\": \"<string>\",\n \"clientId\": \"<string>\",\n \"codeVerifier\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://sdk.anghami.com/v1/auth/token")
.header("Content-Type", "application/json")
.body("{\n \"code\": \"<string>\",\n \"redirectUri\": \"<string>\",\n \"clientId\": \"<string>\",\n \"codeVerifier\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sdk.anghami.com/v1/auth/token")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"code\": \"<string>\",\n \"redirectUri\": \"<string>\",\n \"clientId\": \"<string>\",\n \"codeVerifier\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"token": {
"accessToken": "<string>",
"tokenType": "<string>",
"expiresIn": 123,
"refreshToken": "<string>",
"scopes": [
"AUTH_SCOPE_UNSPECIFIED"
]
}
}{
"violations": [
{
"field": "<string>",
"description": "<string>"
}
]
}{
"message": "<string>"
}ExchangeToken
ExchangeToken exchanges an authorization code for access and refresh tokens. Uses the OAuth 2.0 Authorization Code + PKCE flow.
curl --request POST \
--url https://sdk.anghami.com/v1/auth/token \
--header 'Content-Type: application/json' \
--data '
{
"code": "<string>",
"redirectUri": "<string>",
"clientId": "<string>",
"codeVerifier": "<string>"
}
'import requests
url = "https://sdk.anghami.com/v1/auth/token"
payload = {
"code": "<string>",
"redirectUri": "<string>",
"clientId": "<string>",
"codeVerifier": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
code: '<string>',
redirectUri: '<string>',
clientId: '<string>',
codeVerifier: '<string>'
})
};
fetch('https://sdk.anghami.com/v1/auth/token', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://sdk.anghami.com/v1/auth/token",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'code' => '<string>',
'redirectUri' => '<string>',
'clientId' => '<string>',
'codeVerifier' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://sdk.anghami.com/v1/auth/token"
payload := strings.NewReader("{\n \"code\": \"<string>\",\n \"redirectUri\": \"<string>\",\n \"clientId\": \"<string>\",\n \"codeVerifier\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://sdk.anghami.com/v1/auth/token")
.header("Content-Type", "application/json")
.body("{\n \"code\": \"<string>\",\n \"redirectUri\": \"<string>\",\n \"clientId\": \"<string>\",\n \"codeVerifier\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sdk.anghami.com/v1/auth/token")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"code\": \"<string>\",\n \"redirectUri\": \"<string>\",\n \"clientId\": \"<string>\",\n \"codeVerifier\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"token": {
"accessToken": "<string>",
"tokenType": "<string>",
"expiresIn": 123,
"refreshToken": "<string>",
"scopes": [
"AUTH_SCOPE_UNSPECIFIED"
]
}
}{
"violations": [
{
"field": "<string>",
"description": "<string>"
}
]
}{
"message": "<string>"
}Body
ExchangeTokenRequest is the request message for exchanging an authorization code for an access token using the OAuth 2.0 Authorization Code + PKCE flow.
The authorization code received from the authorization server callback.
The redirect URI that was used in the authorization request. Must match the URI registered for the client application.
The client application identifier.
The PKCE code verifier corresponding to the code_challenge sent in the authorization request. Must be 43-128 characters per RFC 7636.
43 - 128Response
Successful response
ExchangeTokenResponse is the response message containing the issued tokens.
TokenInfo contains the OAuth 2.0 token response fields. Returned by ExchangeToken and RefreshToken RPCs.
Show child attributes
Show child attributes