# Retorno do OAuth

> Retorno do OAuth: GET /connections/:network/callback. Endereço para onde YouTube, TikTok e Meta devolvem o navegador depois do login (página HTML). Os endereços já cadastrados continuam valendo.

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

`GET /connections/:network/callback` · rota pública, sem chave

Endereço para onde YouTube, TikTok e Meta devolvem o navegador depois do login (página HTML). Os endereços já cadastrados continuam valendo.

Alias antigo em português (continua respondendo, marcado como obsoleto): `/conexoes/:rede/retorno`.

## Parâmetros

| Nome | Onde | Descrição |
|---|---|---|
| `network` | caminho | Rede: youtube, instagram ou tiktok. |

## Exemplo

**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"
```

> Esta rota ainda não tem chamada própria no SDK: O exemplo usa `fetch`.

## Resposta

| Status de sucesso | Quando |
|---|---|
| `200` | Sucesso. |

Uma página HTML curta ("Pronto", "Autorização negada", "Link vencido"…) para o navegador de quem autorizou. Não é JSON: o resultado também aparece em `GET /v1/channels`.

> **Exemplo lido do código** Esta rota não dá para chamar nos testes sem um provedor de verdade (Buffer, vídeo no YouTube, TikTok…), então o exemplo foi montado lendo o código do servidor. As outras respostas saem de chamadas reais ao servidor de testes.

## Erros

Sem erros específicos desta rota além dos comuns.
