PingOne Platform APIs

Step 1: Create the new identity provider resource

   

POST {{apiPath}}/environments/{{envID}}/identityProviders

You can use the POST {{apiPath}}/environments/{{envID}}/identityProviders endpoint to create the identity provider configuration for Facebook. This request automatically creates the core attribute mapping to associate the PingOne username attribute with the Facebook email attribute. To verify the mapping, you can use the ?expand=attributes query filter to show the core attribute details in the POST response.

In the request, the name property for the new identity provider is required and must be unique within the environment. The enabled property is required and should be set to true, and the type property is required and must specify FACEBOOK as the identity provider type.

The {{FacebookAppID}} and {{facebookAppSecret}} are required. These are the values you must obtain from Facebook.

The response shows the configuration data for the new identity provider.

The response also includes an attributes link to initiate a request to create additional attribute mappings.

Headers

Authorization      Bearer {{accessToken}}

Content-Type      application/json

Body

raw ( application/json )

{
    "name": "UseCaseFacebookIdP_{{$timestamp}}",
    "description": "Facebook social media identity provider.",
    "enabled": true,
    "type": "FACEBOOK",
    "appId": "{FacebookAppID}",
    "appSecret": "{facebookAppSecret}"
}

Example Request

  • cURL

  • C#

  • Go

  • HTTP

  • Java

  • jQuery

  • NodeJS

  • Python

  • PHP

  • Ruby

  • Swift

curl --location --globoff '{{apiPath}}/environments/{{envID}}/identityProviders' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{accessToken}}' \
--data '{
    "name": "UseCaseFacebookIdP_{{$timestamp}}",
    "description": "Facebook social media identity provider.",
    "enabled": true,
    "type": "FACEBOOK",
    "appId": "{FacebookAppID}",
    "appSecret": "{facebookAppSecret}"
}'
var options = new RestClientOptions("{{apiPath}}/environments/{{envID}}/identityProviders")
{
  MaxTimeout = -1,
};
var client = new RestClient(options);
var request = new RestRequest("", Method.Post);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Authorization", "Bearer {{accessToken}}");
var body = @"{" + "\n" +
@"    ""name"": ""UseCaseFacebookIdP_{{$timestamp}}""," + "\n" +
@"    ""description"": ""Facebook social media identity provider.""," + "\n" +
@"    ""enabled"": true," + "\n" +
@"    ""type"": ""FACEBOOK""," + "\n" +
@"    ""appId"": ""{FacebookAppID}""," + "\n" +
@"    ""appSecret"": ""{facebookAppSecret}""" + "\n" +
@"}";
request.AddStringBody(body, DataFormat.Json);
RestResponse response = await client.ExecuteAsync(request);
Console.WriteLine(response.Content);
package main

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

func main() {

  url := "{{apiPath}}/environments/{{envID}}/identityProviders"
  method := "POST"

  payload := strings.NewReader(`{
    "name": "UseCaseFacebookIdP_{{$timestamp}}",
    "description": "Facebook social media identity provider.",
    "enabled": true,
    "type": "FACEBOOK",
    "appId": "{FacebookAppID}",
    "appSecret": "{facebookAppSecret}"
}`)

  client := &http.Client {
  }
  req, err := http.NewRequest(method, url, payload)

  if err != nil {
    fmt.Println(err)
    return
  }
  req.Header.Add("Content-Type", "application/json")
  req.Header.Add("Authorization", "Bearer {{accessToken}}")

  res, err := client.Do(req)
  if err != nil {
    fmt.Println(err)
    return
  }
  defer res.Body.Close()

  body, err := io.ReadAll(res.Body)
  if err != nil {
    fmt.Println(err)
    return
  }
  fmt.Println(string(body))
}
POST /environments/{{envID}}/identityProviders HTTP/1.1
Host: {{apiPath}}
Content-Type: application/json
Authorization: Bearer {{accessToken}}

{
    "name": "UseCaseFacebookIdP_{{$timestamp}}",
    "description": "Facebook social media identity provider.",
    "enabled": true,
    "type": "FACEBOOK",
    "appId": "{FacebookAppID}",
    "appSecret": "{facebookAppSecret}"
}
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n    \"name\": \"UseCaseFacebookIdP_{{$timestamp}}\",\n    \"description\": \"Facebook social media identity provider.\",\n    \"enabled\": true,\n    \"type\": \"FACEBOOK\",\n    \"appId\": \"{FacebookAppID}\",\n    \"appSecret\": \"{facebookAppSecret}\"\n}");
Request request = new Request.Builder()
  .url("{{apiPath}}/environments/{{envID}}/identityProviders")
  .method("POST", body)
  .addHeader("Content-Type", "application/json")
  .addHeader("Authorization", "Bearer {{accessToken}}")
  .build();
Response response = client.newCall(request).execute();
var settings = {
  "url": "{{apiPath}}/environments/{{envID}}/identityProviders",
  "method": "POST",
  "timeout": 0,
  "headers": {
    "Content-Type": "application/json",
    "Authorization": "Bearer {{accessToken}}"
  },
  "data": JSON.stringify({
    "name": "UseCaseFacebookIdP_{{$timestamp}}",
    "description": "Facebook social media identity provider.",
    "enabled": true,
    "type": "FACEBOOK",
    "appId": "{FacebookAppID}",
    "appSecret": "{facebookAppSecret}"
  }),
};

$.ajax(settings).done(function (response) {
  console.log(response);
});
var request = require('request');
var options = {
  'method': 'POST',
  'url': '{{apiPath}}/environments/{{envID}}/identityProviders',
  'headers': {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer {{accessToken}}'
  },
  body: JSON.stringify({
    "name": "UseCaseFacebookIdP_{{$timestamp}}",
    "description": "Facebook social media identity provider.",
    "enabled": true,
    "type": "FACEBOOK",
    "appId": "{FacebookAppID}",
    "appSecret": "{facebookAppSecret}"
  })

};
request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});
import requests
import json

url = "{{apiPath}}/environments/{{envID}}/identityProviders"

payload = json.dumps({
  "name": "UseCaseFacebookIdP_{{$timestamp}}",
  "description": "Facebook social media identity provider.",
  "enabled": True,
  "type": "FACEBOOK",
  "appId": "{FacebookAppID}",
  "appSecret": "{facebookAppSecret}"
})
headers = {
  'Content-Type': 'application/json',
  'Authorization': 'Bearer {{accessToken}}'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('{{apiPath}}/environments/{{envID}}/identityProviders');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->setHeader(array(
  'Content-Type' => 'application/json',
  'Authorization' => 'Bearer {{accessToken}}'
));
$request->setBody('{\n    "name": "UseCaseFacebookIdP_{{$timestamp}}",\n    "description": "Facebook social media identity provider.",\n    "enabled": true,\n    "type": "FACEBOOK",\n    "appId": "{FacebookAppID}",\n    "appSecret": "{facebookAppSecret}"\n}');
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
require "uri"
require "json"
require "net/http"

url = URI("{{apiPath}}/environments/{{envID}}/identityProviders")

http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Post.new(url)
request["Content-Type"] = "application/json"
request["Authorization"] = "Bearer {{accessToken}}"
request.body = JSON.dump({
  "name": "UseCaseFacebookIdP_{{\$timestamp}}",
  "description": "Facebook social media identity provider.",
  "enabled": true,
  "type": "FACEBOOK",
  "appId": "{FacebookAppID}",
  "appSecret": "{facebookAppSecret}"
})

response = http.request(request)
puts response.read_body
let parameters = "{\n    \"name\": \"UseCaseFacebookIdP_{{$timestamp}}\",\n    \"description\": \"Facebook social media identity provider.\",\n    \"enabled\": true,\n    \"type\": \"FACEBOOK\",\n    \"appId\": \"{FacebookAppID}\",\n    \"appSecret\": \"{facebookAppSecret}\"\n}"
let postData = parameters.data(using: .utf8)

var request = URLRequest(url: URL(string: "{{apiPath}}/environments/{{envID}}/identityProviders")!,timeoutInterval: Double.infinity)
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("Bearer {{accessToken}}", forHTTPHeaderField: "Authorization")

request.httpMethod = "POST"
request.httpBody = postData

let task = URLSession.shared.dataTask(with: request) { data, response, error in
  guard let data = data else {
    print(String(describing: error))
    return
  }
  print(String(data: data, encoding: .utf8)!)
}

task.resume()

Example Response

201 Created

{
    "_links": {
        "self": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/identityProviders/1c38aaf9-e7e9-4000-b1ff-ef44ed8f0af5"
        },
        "environment": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
        },
        "attributes": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/identityProviders/1c38aaf9-e7e9-4000-b1ff-ef44ed8f0af5/attributes"
        }
    },
    "id": "1c38aaf9-e7e9-4000-b1ff-ef44ed8f0af5",
    "type": "FACEBOOK",
    "name": "UseCaseFacebookIdP_1624046300",
    "description": "Facebook social media identity provider.",
    "enabled": true,
    "environment": {
        "id": "abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
    },
    "createdAt": "2021-06-18T19:58:20.597Z",
    "updatedAt": "2021-06-18T19:58:20.597Z",
    "appSecret": "{facebookAppSecret}",
    "appId": "{FacebookAppID}"
}