2016-08-08 12 views
0

Ich bin auf der Suche nach einem API-Aufruf, um die Post-Daten eines geschützten WP-Blog zu greifen. Ich habe ein paar Probleme damit, das WP-Authentifizierungsverfahren von PHP auf R zu übersetzen, teilweise weil ich den Prozess nicht vollständig verstehe.Machen Sie WordPress API Anruf mit RCurl/HTTR

Mein Verständnis des OAuth-Token-Empfang Verfahren stammt aus this page:

  1. Senden Benutzer einer Berechtigungs Endpunkt, der ein Login aufgefordert: https://public-api.wordpress.com/oauth2/authorize?client_id=your_client_id&redirect_uri=your_url&response_type=code&blog=1234
  2. Dann machen Sie eine POST Anfrage an die API mit dem Code in die oben Umleitungs-uRL eingebaut:

$curl = curl_init('https://public-api.wordpress.com/oauth2/token'); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, array( 'client_id' => your_client_id, 'redirect_uri' => your_redirect_url, 'client_secret' => your_client_secret_key, 'code' => $_GET['code'], // The code from the previous request 'grant_type' => 'authorization_code' )); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $auth = curl_exec($curl); $secret = json_decode($auth); $access_key = $secret->access_token;

, die dann zurückgibt:

{ 
    "access_token": "YOUR_API_TOKEN", 
    "blog_id": "blog ID", 
    "blog_url": "blog url", 
    "token_type": "bearer" 
} 

aber ich habe keine Ahnung, wo in r zu starten. Ich entschuldige mich, dass dies kein reproduzierbares Problem ist. Ich habe versucht, den Code here, zu verwenden, aber ich kann nicht ganz herausfinden, was schief gelaufen ist:

app_name <- 'myapp' 
client_id <- 'your_client_id' 
redirect_uri <- 'your_redirect_url' 
client_secret <- 'your_client_secret_key' 
resource_uri <- #IDK what this is 

oauth_endpoint(authorize = "https://public-api.wordpress.com/oauth2/authorize?client_id=your_client_id&redirect_uri=your_url&response_type=code&blog=1234", 
access = "https://public-api.wordpress.com/oauth2/token") 
wordpress_endpoint <- oauth_endpoints('wordpress') 

# Create the app instance. 
myapp <- oauth_app(key = 'your_client_id', 
        secret = 'your_client_secret_key') 

mytoken <- oauth2.0_token(wordpress_endpoint, myapp, 
          user_params = list(resource = resource_uri), 
          use_oob = FALSE) 
+0

Nach der Suche im Internet nach Beispiele für die Verwendung 'httr' mit verschiedenen APIs zu authentifizieren und die Zusammenstellung einige Code das funktioniert letztendlich nicht ganz, ich verstehe die Frustration, stecken zu bleiben. Bitte poste den Code, den du bisher versucht hast, damit wir dir weiterhelfen können. – cory

+0

Also habe ich die Frage mit dem, was ich bisher versucht habe, aktualisiert, aber ich bin mir nicht ganz sicher, ob ich 'httr' verstehe. Müssen Sie eines der "vorinstallierten" APIs im Paket verwenden (z. B. _ 'ouath_endpoints (" google "))? – arebearit

Antwort

0

Es gibt in Endpunkte für bestimmte APIs gebaut ... so dass Sie nicht die URLs selbst zu bekommen. Ich weiß nicht, Wordpress ist einer von ihnen, so dass Sie für sich selbst mit der oauth_endpoint Anruf erstellen. So etwas wie dies funktionieren könnte ... aber ich habe nicht ein Wordpress-Konto zu testen ...

wordpress <- oauth_endpoint(authorize = "https://public-api.wordpress.com/oauth2/authorize?client_id=your_client_id&redirect_uri=your_url&response_type=token&blog=1234", 
          access = "https://public-api.wordpress.com/oauth2/token") 

myapp <- oauth_app(key = 'your_client_id', 
        secret = 'your_client_secret_key') 

mytoken <- oauth2.0_token(wordpress, myapp) 
+0

Also, wenn ich diesen Code in R ausführen gibt es diese Meldung 'Ungültige Anfrage, bitte gehen Sie zurück und versuchen Sie es erneut. Fehlercode: invalid_request Fehlermeldung: Mismatch in redirect_uri.' Aber wenn ich die Autorisierungsadresse in einem Browser ausführen, bringt es mich auf die WP-Autorisierungsseite ... – arebearit