Abgesehen davon, dass dies eine Anforderung von Oauth2 ist, muss das client_secret in diesem Schritt verwendet werden, um zu überprüfen, ob Sie tatsächlich derjenige sind, den Sie angeben.
Es läuft alles darauf hinaus, warum der Prozess so ist, wie er ist...
Der "Code", den Sie bei der ersten Anfrage zurückerhalten, ist vom Standpunkt der Sicherheit aus gesehen ziemlich schwach. Er könnte auf dem Weg zurück zu Ihnen im Umleitungslink gekapert werden, der meiner Erfahrung nach häufig zu Landing Pages ohne SSL-Schutz führt. Selbst wenn Sie Ihre gesamte Website zu 100 % mit HTTPS verschlüsseln, ist nicht alles völlig sicher. Jemand könnte den Code finden, indem er sich die Anfrage-URLs ansieht, die in den Zugriffsprotokollen Ihres Webservers aufgezeichnet werden.
Selbst wenn Sie den Zugang zu Ihren Servern mit den strengsten Sicherheitsvorkehrungen jenseits des Buckingham Palace versehen haben, wissen Sie, dass jemand Ihre Protokolle irgendwann an einem weniger sicheren Ort "archivieren" wird, wenn Sie mehr als ein paar Jahre auf dem Markt sind. Wahrscheinlich auf einem USB-Stick, den sie bei Starbucks zurückgelassen haben...
Dies lässt sich nicht vermeiden, wenn Sie einen serverseitigen API-Flow verwenden. Im Gegensatz zu Javascript, das innerhalb des Client-Browsers ausgeführt wird, können Sie den temporären Code nicht nach dem Hash hinzufügen, um zu verhindern, dass er protokolliert wird, da Browser-Clients nichts nach der Hash-Marke mit der Anfrage senden. JS kann die Redirect Url abfangen und die Daten nach dem Hash-Tag auslesen. Deshalb gibt es den JS Oauth2 Flow, der einfach den access_token zurückgibt, ohne den zusätzlichen Zwischencode zu verwenden. Keine Client_Secret Notwendigkeit auf der JS-Seite entweder, was gut ist, wie es in der Regel auf, wenn Sie Passwörter und geheime Schlüssel in Javascript setzen verpönt ist.
Um nun zu verhindern, dass dieser Zwischencode von einem Bösewicht verwendet wird, um ein Zugangstoken zu erhalten, werden die Client_ID und das Client_Secret mitgeschickt, damit der API-Server authentifizieren kann, dass Sie derjenige sind, der Sie vorgeben zu sein, und dass Sie die Berechtigung haben, den Code gegen ein Zugangstoken einzulösen. Nichts ist besser als ein gemeinsames Geheimnis!
Da der Code nur ein sehr kurzes Zeitfenster hat, bevor er abläuft - im Grunde ist er dafür gedacht, dass Sie ihn sofort gegen einen access_token eintauschen -, ist die Gefahr, dass jemand den Code stiehlt und versucht, ein Client_Secret zu erzwingen, nicht allzu groß.
Die Kombination aus einem kurzen Zeitfenster für die Nutzung und dem client_secret (natürlich über SSL) liefert ein Geheimnis, das Sie später mit Ihren Client-Anmeldedaten austauschen