Start device flow (with appIdentifier)
GET {{authPath}}/{{envID}}/device/{{appIdentifier}}
The GET /{{envID}}/device/{{appIdentifier}} operation returns a 302 message with a flowID embedded in the Location header for applications that specify a device auth grant. The Location header looks like this:
https://apps.pingone.com/934dba65-d14e-413e-21b4-ee699a5cea21/signon/?flowId=032150b5-44a3-4b2f-8b3b-126aabb3e89f
The endpoint’s {{appIdentifier}} value is set on the application configuration. The ID can be the PingOne application ID (clientId) or the device path ID (devicePathId), which is configured on the application and is used only with the /device endpoint.
This request supports the user_code query parameter. If the request URL includes the user_code query parameter, GET /{{envID}}/device/{{appIdentifier}}?user_code={{userCode}}, the sign-on flow pre-populates the activation input field with the user_code value returned by the POST {{authPath}}/{{envID}}/as/device_authorization request.
Example Request
-
cURL
-
C#
-
Go
-
HTTP
-
Java
-
jQuery
-
NodeJS
-
Python
-
PHP
-
Ruby
-
Swift
curl --location --globoff '{{authPath}}/{{envID}}/device/{{appIdentifier}}' \
--header 'Cookie: {{sessionToken}}'
var options = new RestClientOptions("{{authPath}}/{{envID}}/device/{{appIdentifier}}")
{
MaxTimeout = -1,
};
var client = new RestClient(options);
var request = new RestRequest("", Method.Get);
request.AddHeader("Cookie", "{{sessionToken}}");
RestResponse response = await client.ExecuteAsync(request);
Console.WriteLine(response.Content);
package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "{{authPath}}/{{envID}}/device/{{appIdentifier}}"
method := "GET"
client := &http.Client {
}
req, err := http.NewRequest(method, url, nil)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Cookie", "{{sessionToken}}")
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))
}
GET /{{envID}}/device/{{appIdentifier}} HTTP/1.1
Host: {{authPath}}
Cookie: {{sessionToken}}
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
.url("{{authPath}}/{{envID}}/device/{{appIdentifier}}")
.method("GET", body)
.addHeader("Cookie", "{{sessionToken}}")
.build();
Response response = client.newCall(request).execute();
var settings = {
"url": "{{authPath}}/{{envID}}/device/{{appIdentifier}}",
"method": "GET",
"timeout": 0,
"headers": {
"Cookie": "{{sessionToken}}"
},
};
$.ajax(settings).done(function (response) {
console.log(response);
});
var request = require('request');
var options = {
'method': 'GET',
'url': '{{authPath}}/{{envID}}/device/{{appIdentifier}}',
'headers': {
'Cookie': '{{sessionToken}}'
}
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
import requests
url = "{{authPath}}/{{envID}}/device/{{appIdentifier}}"
payload = {}
headers = {
'Cookie': '{{sessionToken}}'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('{{authPath}}/{{envID}}/device/{{appIdentifier}}');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Cookie' => '{{sessionToken}}'
));
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 "net/http"
url = URI("{{authPath}}/{{envID}}/device/{{appIdentifier}}")
http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Get.new(url)
request["Cookie"] = "{{sessionToken}}"
response = http.request(request)
puts response.read_body
var request = URLRequest(url: URL(string: "{{authPath}}/{{envID}}/device/{{appIdentifier}}")!,timeoutInterval: Double.infinity)
request.addValue("{{sessionToken}}", forHTTPHeaderField: "Cookie")
request.httpMethod = "GET"
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()