# OAuth callback

> OAuth callback: GET /connections/:network/callback. Where YouTube, TikTok and Meta send the browser back after login (an HTML page). Previously registered redirect URLs keep working.

Source: https://praeko.app/docs/en/api/connections/oauth-callback

`GET /connections/:network/callback` · public route, no key

Where YouTube, TikTok and Meta send the browser back after login (an HTML page). Previously registered redirect URLs keep working.

Legacy Portuguese alias (still answered, marked as deprecated): `/conexoes/:rede/retorno`.

## Parameters

| Name | In | Description |
|---|---|---|
| `network` | path | Network: youtube, instagram or tiktok. |

## Example

**curl**

```bash
curl "https://praeko.app/connections/youtube/callback"
```

**JavaScript**

```js
const res = await fetch("https://praeko.app/connections/youtube/callback", {
  method: "GET",
});
console.log(res.status, await res.text());
```

**Node**

```js
// O @praeko/sdk ainda não tem um método para esta rota: use o fetch (aba JavaScript).
const res = await fetch("https://praeko.app/connections/youtube/callback", {
  method: "GET",
});
console.log(res.status, await res.text());
```

**Python**

```python
import requests

resp = requests.get(
    "https://praeko.app/connections/youtube/callback",
)
print(resp.status_code, resp.text)
```

**PHP**

```php
<?php
$ch = curl_init('https://praeko.app/connections/youtube/callback');
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST => 'GET',
    CURLOPT_RETURNTRANSFER => true,
]);
$resposta = curl_exec($ch);
echo curl_getinfo($ch, CURLINFO_HTTP_CODE), " ", $resposta, PHP_EOL;
curl_close($ch);
```

**Go**

```go
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	req, err := http.NewRequest("GET", "https://praeko.app/connections/youtube/callback", nil)
	if err != nil {
		panic(err)
	}
	resp, err := http.DefaultClient.Do(req)
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()
	out, _ := io.ReadAll(resp.Body)
	fmt.Println(resp.Status, string(out))
}
```

**Ruby**

```ruby
require "net/http"
require "uri"

uri = URI("https://praeko.app/connections/youtube/callback")
request = Net::HTTP::Get.new(uri)

response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
puts response.code, response.body
```

**C#**

```csharp
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;

using var client = new HttpClient();
using var request = new HttpRequestMessage(HttpMethod.Get, "https://praeko.app/connections/youtube/callback");

using var response = await client.SendAsync(request);
Console.WriteLine($"{(int)response.StatusCode} {await response.Content.ReadAsStringAsync()}");
```

**Java**

```java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Main {
    public static void main(String[] args) throws Exception {
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://praeko.app/connections/youtube/callback"))
            .method("GET", HttpRequest.BodyPublishers.noBody())
            .build();
        HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.statusCode() + " " + response.body());
    }
}
```

**HTTPie**

```bash
http GET "https://praeko.app/connections/youtube/callback"
```

> This route has no dedicated SDK call yet: The example uses `fetch`.

## Response

| Success status | When |
|---|---|
| `200` | Success. |

A short HTML page ("Done", "Authorization denied", "Link expired"…) for the browser of whoever authorized. It is not JSON: the result also shows up in `GET /v1/channels`.

> **Example read from the code** This route cannot be called in our tests without a real provider (Buffer, a video on YouTube, TikTok…), so the example was written by reading the server code. The other responses come from real calls to the test server.

## Errors

No errors specific to this route besides the common ones.
