Once your user is created you will need to generate a session token that will be passed with every subsequent request to the graphql endpoint. you will need your client_id
, client_secret
, and the user_id
for the currently logged in user. This is the user_id
that was returned from your call to registerOrganizationUser.
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
// Define the user ID as a path parameter
userID := "your-user-id"
url := fmt.Sprintf("https://your-api.com/v1/users/authenticate/%s", userID)
// Create a new HTTP GET request
req, err := http.NewRequest("GET", url, nil)
if err != nil {
log.Fatalf("Error creating request: %v", err)
}
// Set the Authorization header with client credentials
clientID := "your-client-id"
clientSecret := "your-client-secret"
authHeader := fmt.Sprintf("Bearer %s:%s", clientID, clientSecret)
req.Header.Set("Authorization", authHeader)
// Send the request
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
log.Fatalf("Error making request: %v", err)
}
defer resp.Body.Close()
// Read and process the response, expecting a plain string for the session token
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatalf("Error reading response: %v", err)
}
if resp.StatusCode == http.StatusOK {
// The response is a plain string containing the session token
sessionToken := string(body)
fmt.Printf("Successfully authenticated!\nSession Token: %s\n", sessionToken)
} else {
// Handle the error response
var errorResponse map[string]string
err = json.Unmarshal(body, &errorResponse)
if err != nil {
log.Fatalf("Error decoding error JSON: %v", err)
}
fmt.Printf("Error: %s\n", errorResponse["error"])
}
}
Try typing /
to see how easy it is to add more content!