Πώς να δημιουργήσετε έναν πελάτη OAuth
Έκδοση API 2026-10-affable-towhee
Πριν πατήσετε «Δημιουργία πελάτη» στη σελίδα Ενσωματώσεις, αποφασίστε τρία πράγματα: τι μπορεί να κάνει ο πελάτης, ποια διεργασία κρατά το μυστικό του και ποιος πληρώνει για τις κλήσεις του. Ο οδηγός Έλεγχος ταυτότητας ορίζει τους κανόνες· αυτή η σελίδα τους εφαρμόζει σε δύο φανταστικές εταιρείες, τη Luba και τη Farducks.
Luba: το Dive Deck
Η Luba λειτουργεί αυτόνομα υποβρύχια ως υπηρεσία μεταφοράς και κοινής χρήσης διαδρομών. Το Dive Deck της δείχνει σε κάθε επιβάτη μια φράση της κατάδυσης στην οθόνη της καμπίνας, στη γλώσσα που μαθαίνει, και η ομάδα λειτουργιών της Luba παρακολουθεί πόσο από το όριο χρήσης απομένει.
Η Luba δημιουργεί έναν πελάτη, τον Luba Dive Deck, με άδεια για «Δημιουργία λεξιλογίου» (vocab:generate) και «Ανάγνωση χρήσης» (usage:read) και με χρέωση «Το όριο του προγράμματός σας» (allowance). Δύο διεργασίες τον μοιράζονται, και καθεμία ζητά κατά την ανταλλαγή μόνο το εύρος δικαιωμάτων που χρειάζεται. Μια ανταλλαγή που παραλείπει το scope λαμβάνει κάθε εύρος δικαιωμάτων που επιτρέπεται στον πελάτη· μια ανταλλαγή που ζητά εύρος δικαιωμάτων που δεν επιτρέπεται στον πελάτη απορρίπτεται ολόκληρη με invalid_scope και δεν περιορίζεται ποτέ σιωπηρά.
Ο διακομιστής αποστολής γράφει τις φράσεις κάθε κατάδυσης. Ζητά μόνο το vocab:generate, οπότε ένα διακριτικό που διαρρέει από αυτόν δεν μπορεί να διαβάσει τη χρήση της Luba.
export LINGARA_TOKEN="$(curl -sS --fail-with-body -X POST "https://api.getlingara.com/oauth/token" \
-u "$LINGARA_CLIENT_ID:$LINGARA_CLIENT_SECRET" \
-d "grant_type=client_credentials" \
--data-urlencode "scope=vocab:generate" | jq -r '.access_token // error(.error)')"curl -N -X POST "https://api.getlingara.com/v1/vocab/stream" \
-H "Authorization: Bearer $LINGARA_TOKEN" \
-H "Content-Type: application/json" \
-d '{"level":2,"source_lang":"en","target_lang":"zh","count":8}'Ο πίνακας ελέγχου λειτουργιών είναι μια δεύτερη διεργασία στην πλευρά του διακομιστή, με το ίδιο αναγνωριστικό πελάτη και μυστικό. Ζητά μόνο το usage:read και διαβάζει τι απομένει από το όριο χρήσης.
export LINGARA_TOKEN="$(curl -sS --fail-with-body -X POST "https://api.getlingara.com/oauth/token" \
-u "$LINGARA_CLIENT_ID:$LINGARA_CLIENT_SECRET" \
-d "grant_type=client_credentials" \
--data-urlencode "scope=usage:read" | jq -r '.access_token // error(.error)')"curl "https://api.getlingara.com/v1/usage" \
-H "Authorization: Bearer $LINGARA_TOKEN"Και οι δύο διεργασίες εκτελούνται στους διακομιστές της Luba. Το tablet στην καμπίνα ζητά φράσεις από τον διακομιστή αποστολής και δεν κρατά ποτέ το μυστικό ή κάποιο διακριτικό, επειδή οτιδήποτε βρίσκεται σε μια συσκευή που μπορεί να αγγίξει ένας επιβάτης μπορεί να διαβαστεί. Η ενότητα «Κρατήστε μυστικά και διακριτικά σε διακομιστή» του οδηγού Έλεγχος ταυτότητας εξηγεί γιατί.
Ο ίδιος πελάτης ως έργο που μπορείτε να κλωνοποιήσετε και να εκτελέσετε: integrations/luba-dive-deck
Farducks: Batter Rewards
Η Farducks είναι μια αλυσίδα μικρών καταστημάτων με fish and chips. Όσο τηγανίζεται μια παραγγελία, η εφαρμογή επιβράβευσης Batter Rewards ζητά από το backend της ίδιας της Farducks ένα σύντομο σχέδιο μαθήματος και έπειτα το διαβάζει. Η εφαρμογή και τα ταμεία καλούν το backend της Farducks, ποτέ το Lingara, οπότε κανένα από τα δύο δεν κρατά το μυστικό.
Η Farducks δημιουργεί έναν πελάτη, τον Farducks Batter Rewards, με άδεια για «Δημιουργία σχεδίων μαθημάτων» (lesson_plans:write) και «Ανάγνωση σχεδίων μαθημάτων» (lesson_plans:read) και με χρέωση «Το όριο του προγράμματός σας» (allowance). Αυτή είναι σήμερα η μόνη χρέωση με την οποία μπορεί να δημιουργηθεί ένας πελάτης, και η χρέωση ενός πελάτη ορίζεται οριστικά κατά τη δημιουργία του. Ο άλλος τρόπος, metered («Πληρωμή ανά χρήση»), περιγράφεται στην ενότητα «Ποιος πληρώνει για μια κλήση» του οδηγού Έλεγχος ταυτότητας.
Το backend ζητά μόνο το lesson_plans:write και δημιουργεί το σχέδιο. Η απάντηση έρχεται σε ροή, και το συμβάν started φέρει το plan_id του σχεδίου.
export LINGARA_TOKEN="$(curl -sS --fail-with-body -X POST "https://api.getlingara.com/oauth/token" \
-u "$LINGARA_CLIENT_ID:$LINGARA_CLIENT_SECRET" \
-d "grant_type=client_credentials" \
--data-urlencode "scope=lesson_plans:write" | jq -r '.access_token // error(.error)')"curl -N -X POST "https://api.getlingara.com/v1/lesson-plans" \
-H "Authorization: Bearer $LINGARA_TOKEN" \
-H "Content-Type: application/json" \
-d '{"context":"Ordering food at a night market","source_lang":"en","target_lang":"zh","level":2}'Ορίστε το ID σε αυτό το plan_id, έπειτα ζητήστε το lesson_plans:read και διαβάστε το σχέδιο. Μία ανταλλαγή μπορεί να ζητήσει πολλά από τα εύρη δικαιωμάτων του πελάτη, χωρισμένα με κενά στο scope· κάθε εντολή εδώ ζητά ένα, επειδή η καθεμία αποτελείται από μία μόνο κλήση.
export LINGARA_TOKEN="$(curl -sS --fail-with-body -X POST "https://api.getlingara.com/oauth/token" \
-u "$LINGARA_CLIENT_ID:$LINGARA_CLIENT_SECRET" \
-d "grant_type=client_credentials" \
--data-urlencode "scope=lesson_plans:read" | jq -r '.access_token // error(.error)')"curl "https://api.getlingara.com/v1/lesson-plans/$ID" \
-H "Authorization: Bearer $LINGARA_TOKEN"Μια μέρα το μυστικό επικολλάται σε ένα αίτημα υποστήριξης. Στη σελίδα Ενσωματώσεις, η Farducks πατά «Νέο μυστικό» και το αναπτύσσει στο backend, περιμένει μέχρι η ημερομηνία «Τελευταία χρήση» του παλιού μυστικού να σταματήσει να αλλάζει και έπειτα πατά «Ανάκληση» στο παλιό μυστικό. Από εκείνη τη στιγμή απορρίπτεται κάθε διακριτικό πρόσβασης που αποκτήθηκε με ανταλλαγή του παλιού μυστικού. Η ενότητα «Εναλλαγή μυστικού» του οδηγού Έλεγχος ταυτότητας περιγράφει το όριο των δύο μυστικών και γιατί το μοναδικό μυστικό ενός πελάτη δεν μπορεί να ανακληθεί.
Ο ίδιος πελάτης ως έργο που μπορείτε να κλωνοποιήσετε και να εκτελέσετε: integrations/farducks-batter-rewards
Πού να πάτε μετά
Ο οδηγός Έλεγχος ταυτότητας καλύπτει τα σφάλματα της ανταλλαγής, τι να κάνετε όταν λήξει ένα διακριτικό και τον κανόνα εναλλαγής. Ο οδηγός Εκδόσεις καλύπτει την έκδοση στην οποία είναι δεσμευμένος ένας πελάτης και πώς να επιλέξετε άλλη για μία κλήση.
Αν μια μετάφραση διαφέρει από την αγγλική τεκμηρίωση, ισχύει η αγγλική τεκμηρίωση.