OAuth 2.0-enhetsflöde för IoT-integrering
För att integrera appar som körs på enheter med begränsade möjligheter för inmatning eller visning, till exempel Smart TVs, vitvaror och andra IoT-enheter, använd OAuth 2.0-enhetsflödet. Kommandoradsappar kan också använda detta flöde. Användare kan ansluta dessa appar till Salesforce genom att gå till en webbläsare på en enhet med mer avancerade inmatningsmöjligheter, som en dator eller mobil.
Versioner som krävs
| Tillgängliga i: både Salesforce Classic och Lightning Experience |
| Tillgängliga i: Alla versioner |
Anta till exempel att en kund använder en Bluetooth-enhet för att styra sin hemmabelysning medan han eller hon är borta på kvällen. Du kan skapa en extern klientapp för Bluetooth-enheten för att aktivera detta flöde.
- Användaren öppnar bluetoothappen på sin mobilenhet och klickar på Tänd ljuset.
- Den externa klientappen publicerar en begäran till Salesforce-tokenslutpunkten.
- Salesforce verifierar begäran och returnerar en användarläslig användarkod, verifierings-URL och enhetskod.
- Bluetoothappen visar enhetskoden och instruerar användaren att ange den på den specificerade verifierings-URL:en. Appen börjar även utföra pollning för Salesforce-tokenslutpunkten för auktorisering.
- Användare klickar på länken till verifierings-URL:en för verifiering och anger koden.
- Användaren auktoriserar sedan appen att komma åt deras skyddade data, i detta fall deras bostads plats.
- Salesforce skickar en åtkomst- och uppdateringstoken till den externa klientappen.
- Bluetoothappen kan komma åt användarens bostad och tända lamporna.
Låt oss gå igenom stegen i detta auktoriseringsflöde.
- Enhet begär auktorisering
- Salesforce returnerar verifieringskoder
- Användare loggar in och auktoriserar medan enheten utför pollning på tokenslutpunkten
- Salesforce beviljar åtkomsttoken
Enhet begär auktorisering
För att inleda auktoriseringsflödet publicerar enheten—via en extern klientapp—en auktoriseringsbegäran till Salesforce-tokenslutpunkten.
Exempel:
POST /services/oauth2/token HTTP/1.1
Host: login.salesforce.com
Content-Type: application/x-www-form-urlencoded
response_type=device_code&
client_id=3MVG9PhR6g6B7ps7TTI4cP7Mppg3l7tu.MRAYULyVqcmA9hGLpHiiS.Q7rO9yjlmffiBUM6tFpYAlXEkRjHb9&scope=apiInkludera dessa parametrar i begäran.
| Parameter | Beskrivning |
|---|---|
Request Header
|
Begärans sidhuvud innehåller denna information:
|
response_type
|
Den OAuth 2.0-beviljandetyp som den externa klientappen begär. Värdet för detta flöde måste vara device_code. |
client_id
|
Konsumentnyckeln för den externa klientappen. För att komma till konsumentnyckeln, hitta den externa klientappen från Hanteraren för externa klienter och välj Redigera inställningar från rullmenyn. Expandera sedan sektionen OAuth-inställningar och klicka på Konsumentnyckel och hemlighet. Ibland ombes du bekräfta din identitet innan du kan se konsumentnyckeln. |
scope
|
Tillval. Behörigheter som definierar vilken typ av skyddade resurser en extern klientapp har åtkomst till. Du tilldelar omfattningar till en extern klientapp när du bygger den, och de inkluderas med OAuth-tokens under auktoriseringsflödet. Om du inte inkluderar denna parameter begärs alla omfattningar som är tilldelade till den externa klientappen. Omfattningen som skickas i denna parameter måste vara en underuppsättning av de registrerade omfången. För giltiga parametrar, se OAuth-omfång. |
Salesforce returnerar verifieringskoder
Efter att begäran har verifierats returnerar Salesforce en användarläslig användarkod, verifierings-URL och enhetskod.
Detta exempelsvar returnerar dessa värden med statuskoden 200.
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
{
"device_code":"M01WRzlQaFI2ZzZCN3BzN1RUSTRjUDdNcHBnM2w3dHUuTVJBWVVMeVZxY21BOWhHTHBIaWlTLlE3ck85eWpsbWZmaUJVTTZ0RnBZQWxYRWtSakhiOTsxMC4yMi4zNC45MjsxNDc3Njc0NDg3NTA1O1gxRDlTRUVU",
"user_code":"X1D9SEET",
"verification_uri":"https://acme.my.salesforce.com/setup/connect",
"interval":5
}
Följande parametrar inkluderas i svaret.
| Parameter | Beskrivning |
|---|---|
Response Header
|
Svarssidhuvudet innehåller denna information:
|
device_code
|
En verifieringskod för enheten. Denna kod är giltig i 10 minuter. Koden kan innehålla stora bokstäver, små bokstäver och siffror. Salesforce kan när som helst ändra hur vi formaterar enhetskoder. När du utvecklar integreringar som använder detta flöde, gör inte antaganden om enhetskodens format och längd. |
user_code
|
En verifieringskod för slutanvändaren, skickad som en 8-siffrig alfanumerisk kod. Användaren måste ange denna kod på verifierings-URL:n. Denna kod är giltig i 10 minuter. |
verification_uri
|
Slutanvändarens verifierings-URL på auktoriseringsservern. Användaren måste ange användarkoden på denna verifierings-URL. Med verifiering genom en inloggnings-URL för Min domän eller Experience Cloud-webbplats-URL återspeglar verification_uri den URL som utlöste flödet. Till exempel, om enheten skickar en tokenbegäran till https://acme.my.salesforce.com/services/oauth2/token, är verification_uri https://acme.my.salesforce.com/setup/connect. Om du vill kan du lägga till parametern |
interval
|
Det lägsta antal sekunder vi rekommenderar att vänta mellan pollningsbegäranden till tokenslutpunkten. |
Användare loggar in och auktoriserar medan enheten utför pollning på tokenslutpunkten
Klientappen på enheten instruerar användaren att gå till verifierings-URL:en på en dator eller mobilenhet och ange användarkoden. Användaren öppnar en webbläsare, går till verifierings-URL:en och anger den kod som visas på enheten. Om koden är giltig loggar användaren in. Efter inloggning beviljar användaren enheten åtkomst till Salesforce-kontodata.
Samtidigt, efter att ha visat användarkod och verifierings-URL:en, upprepar klientappen på enheten pollning till tokenslutpunkten. Pollning kontrollerar om användaren har auktoriserat åtkomst och om auktoriseringsservern har utfärdat åtkomsttoken.
Här är ett exempel på en pollningsbegäran:
POST /services/oauth2/token HTTP/1.1
Host: login.salesforce.com
Content-Type: application/x-www-form-urlencoded
grant_type=device&
client_id=3MVG9PhR6g6B7ps7TTI4cP7Mppg3l7tu.MRAYULyVqcmA9hGLpHiiS.Q7rO9yjlmffiBUM6tFpYAlXEkRjHb9&code=M01WRzlQaFI2ZzZCN3BzN1RUSTRjUDdNcHBnM2w3dHUuTVJBWVVMeVZxY21BOWhHTHBIaWlTLlE3ck85eWpsbWZmaUJVTTZ0RnBZQWxYRWtSakhiOTsxMC4yMi4zNC45MjsxNDc3Njc0NDg3NTA1O1gxRDlTRUVUPollningsbegäran innehåller dessa parametrar, utöver sidhuvudet.
| Parameter | Beskrivning |
|---|---|
grant_type
|
Värdet måste vara device för detta flöde. |
client_id
|
Konsumentnyckeln för den externa klientappen. För att komma till konsumentnyckeln, hitta den externa klientappen från Hanteraren för externa klienter och välj Redigera inställningar från rullmenyn. Expandera sedan sektionen OAuth-inställningar och klicka på Konsumentnyckel och hemlighet. Ibland ombes du bekräfta din identitet innan du kan se konsumentnyckeln. |
code
|
Auktoriseringsservern skapar en auktoriseringskod, som är en kortlivad token, och skickar den till klienten efter framgångsrik autentisering. Klienten skickar auktoriseringskoden till auktoriseringsservern för att få en åtkomsttoken och, i relevanta fall, en uppdateringstoken. |
Salesforce beviljar åtkomsttoken
Om användaren har auktoriserat åtkomst svarar Salesforce med ett resultatmeddelande och åtkomsttoken tillsammans med andra värden. Exempel:
{
"access_token": "00DD00000008Uw2!ARkAQGppKf6n.VwG.EnFSvi731qWh.7vKfaJjL7h49yutIC84gAsxMrqcE81GjpTjQbDLkytl2ZwosNbIJwUS0X8ahiILj3e"
"refresh_token": "your token here"
"signature": "hJuYICd2IHsjyTcFqTYiOr8THmgDmrcjgWaMp13X6dY="
"scope": "api"
"instance_url": "https://yourInstance.salesforce.com"
"id": "https://login.salesforce.com/id/00DD00000008Uw2MAE/005D0000001cAGmIAM"
"token_type": "Bearer"
"issued_at": "1477674717112"
}Följande parametrar inkluderas i exempelsvaret.
| Parameter | Beskrivning |
|---|---|
access_token
|
OAuth-token som en extern klientapp använder för att begära åtkomst till en skyddad resurs åt klientprogrammet. Ytterligare behörigheter i form av omfattningar kan medfölja åtkomsttoken. |
refresh_token
|
Token som fåtts från webbservern, användaragenten eller hybridappens tokenflöde. Detta värde är en hemlighet. Vidta lämpliga åtgärder för att skydda det. Denna parameter returneras endast om din externa klientapp har konfigurerats med ett refresh_token. |
signature
|
Base64-kodad HMAC-SHA256-signatur signerad med client_secret. Signaturen kan innehålla det sammanlänkade ID:t och issued_at value, som du kan använda för att bekräfta att identitets-URL:en inte har ändrats sedan servern skickade den. |
scope
|
De omfattningar som är associerade med åtkomsttoken. Omfattningar definierar ytterligare vilken typ av skyddade resurser som klienten kan komma åt. Du tilldelar omfattningar till en extern klientapp när du bygger den, och de inkluderas med OAuth-tokens under auktoriseringsflödet. För giltiga parametrar, se OAuth-omfång. |
instance_url
|
En URL som anger instansen för användarens organisation. Exempel: https://yourInstance.salesforce.com/. |
id
|
En identitets-URL som kan användas både för att identifiera användaren och som en sökfråga för mer information om användaren. Se Identitets-URL:er. |
token_type
|
En Bearer som används för alla svar som inkluderar en åtkomsttoken. |
issued_at
|
Tidsstämpel då signaturen skapades i millisekunder. |

