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 |
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}"
}