2017-10-27 2 views
0

So habe ich Erfahrung mit APIs in PHP und JS, aber ich bin auf ein Problem gestoßen, das ich nicht recht herausfinden kann.Eine API für einen Benutzer autorisieren, um anderen anzuzeigen

Ich mache ein Bild-Portfolio für jemanden, der hauptsächlich auf DeviantART veröffentlicht und ich verwende WordPress als CMS. Ich dachte, es wäre nett, wenn ich die DeviantART API verwenden könnte, um nur die Bilder und Metadaten von ihnen zu ziehen und auf der Website zu verwenden, ohne dass die Person alles auf der Portfolio-Website neu veröffentlichen muss.

Offensichtlich ist die API erfordert Authentifizierung (implizit oder anderweitig) zu verwenden aber ich bin verwirrt, wie es tatsächlich umsetzen zu, da es ist nicht, wie der Portfolio Eigentümer in loggt die Bilder anzusehen, sondern würde wahrscheinlich einmal authentifizieren und dann, wenn andere Leute eine Seite besuchen, würde ich eine GET-Anfrage an die API senden, um alle Bilder zu ziehen.

Würde ich einfach ein Plugin schreiben, das den Portfolio-Besitzer zur Authentifizierung auffordert, dann funktionieren die Seiten, bis das Token abläuft? Ich bin mir nur nicht sicher, was der beste Weg wäre, damit umzugehen, damit jeder, der eine Seite besucht, die Bilder des Eigentümers sehen kann. Jede Hilfe würde sehr geschätzt werden. Vielen Dank!

~ Neil

+0

'Ich würde eine GET-Anfrage an die API' von einem Browser oder einem Server senden? –

+0

Ich nehme an, entweder ... Deshalb bitte ich um Hilfe. Ich könnte es in eine Seitenvorlage mit PHP oder in Javascript schreiben. Oder ich schreibe es in ein Plugin für WordPress. Ich bin mir nicht sicher, was in diesem Fall angemessen wäre. Alles würde für mich mehr Sinn ergeben, wenn sich der Benutzer anmeldet, um seine Daten anzuzeigen, stattdessen suche ich nach einer Möglichkeit, diese Daten öffentlich zugänglich zu machen, ohne dass der Benutzer für jeden Betrachter eingreifen muss. –

Antwort

0

Ich würde empfehlen, für this.Since POST-Methode mit diesem über Sicherheitsaspekte betreffen sollte, GET ist nicht der richtige Weg.

Havent arbeiten um die erwähnte API, aber wie wäre es, Autorisierung Schlüssel in einer Konstante und verwenden, wenn Sie eine Anfrage als POST machen? Sie können Curl oder Ajax für die Anfrage verwenden.

Für Ex:

$fields = ['q' => API_ACCESS_KEY,'portfolio_id' => 2]; 
$headers = []; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, API_URL); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields); 

$resultSet = curl_exec($ch); 
curl_close($ch); 
+0

2 Fragen ... 1) Die API definiert speziell das Backend _ (dh 'api.com/gallery/all')_ als' GET'. Ist 'POST' in diesem Fall noch möglich? 2) Müsste dies nicht bedeuten, dass ich einen geheimen Client oder ähnliches speichere, um das Zugriffs-Token zu erhalten, das nicht sicher wäre? Meine Optionen für die Authentifizierung sind Oauth2 Access Token, Client Credentials Grant oder Implicit Grant. –

+0

Ich denke, ich verstehe, was Sie jetzt meinen ... Ein 'POST', um das Access-Token zu bekommen und dann' GET' für die tatsächlichen API-Anrufe. Die Frage bleibt, wo ich die Client-Zugangsdaten speichern würde. –

Verwandte Themen