Ich auch, hatte dieses Problem für eine Weile, ich habe auch eine Frage ohne Antwort zu diesem Thema (hier auf so).
Grundsätzlich sind Ihre Optionen OAuth oder etwas Brauchbares.
Jetzt, für oauth, arbeiten sie an Version 2.0 und Sie sollten kein neues Projekt mit OAuth 1 starten, aber die Sache ist, dass oauth2 noch lange nicht fertig ist und es wenig Unterstützung für einen oauth2 Server gibt php gerade jetzt. Ich möchte nicht sagen, dass oauth2 2-legged/3-legged komplex ist, aber es ist mehr als es sein sollte und auch nachdem ich viele Beiträge dazu gelesen habe, entschied ich, dass ich jetzt mit etwas anderem gehen sollte , nicht oauth (auch einer der oauth-Schöpfer hat das Projekt verlassen, weil er mit der Richtung, in die dieses Projekt geht, nicht zufrieden war), weil es sich in einem "unentschiedenen" Zustand befindet (natürlich werden die Leute argumentieren, dass es so ziemlich fertig ist), aber ich interessiere mich nicht, ich will etwas, das bereits bewiesen ist, will nicht eine Laborratte für riesige Unternehmen sein, um oauth zu testen [ja, oauth geht für riesige Firmeninteressen, nicht deins]).
Wie auch immer, zurück zu meinem Problem, ich mochte immer die Art, wie Amazon mit ihrer API arbeitet, es ist so einfach zu implementieren, also warum nicht in die gleiche Richtung gehen? Ich meine, Amazon ist einer der größten API-Anbieter da draußen, wenn sie es verwenden, haben sie einen echten Grund, dies zu tun.
Gesagt und getan, in weniger als 2 Stunden hatte ich meine Authentifizierung/Authorisierung-Protokoll-up-and-running, und rate mal, es war einfach, einfach und ich genieße es zu schreiben (nicht frustriert wegen oauth). Ein guter Artikel, der mir geholfen hat, war das: http://www.thebuzzmedia.com/designing-a-secure-rest-api-without-oauth-authentication/ was im Grunde erklärt, was Sie tun müssen.
Also, wenn ich Sie wäre, würde ich von dort aus starten :)
Einige API-Dienste benötigen Sie Dinge wie ein client_id im Header der Anforderung senden. Ihre Benutzer können mit cURL ihren Anfragen benutzerdefinierte Header hinzufügen, auf die Sie dann in Ihrem Skript zugreifen können. – Xeoncross