2017-02-16 2 views
1

Ich möchte nicht authentifizierte Zugriffstoken von Vimeo API in meiner App Rails erhalten. Doch die Post-Anforderung gemacht HTTParty gem kehrt folgende Antwort von APIHeader kann nicht an Vimeo gesendet werden mit HTTParty

{"error"=>"You must provide a valid authenticated access token."} 

Der Code Anfrage zu senden ist

header = "basic " + Base64.encode64("****07974be" + ":" + "****ygYBI7I") 

token = HTTParty.post("https://api.vimeo.com/oauth/authorize/client", 
      :body => {:grant_type => 'client_credentials'}, 
      :header => {'Authorization' => header} 
     ) 

json=JSON.parse(token) 

ich überprüft haben, dass die Anmeldeinformationen korrekt sind und auch versucht zu ersetzen: Header mit: Header, und verschiedene Kombinationen der Verwendung von Zeichenfolgen anstelle von Symbolen im Header-Hash. Aber keiner von ihnen funktioniert.

Der Aufruf derselben URL mit denselben Anmeldeinformationen ist jedoch über Postman erfolgreich.

Bearbeiten Wie in einer Antwort erwähnt, müssen wir Header (Plural) verwenden, während Sie den Anruf tätigen. Allerdings hatte ich das schon probiert, aber das Problem bleibt bestehen. Die Verwendung von basic_auth anstelle des Sendens von Headern scheint zu funktionieren, jedoch kann ich nicht herausfinden, warum das Senden von Headern über HTTParty nicht funktioniert, aber ein ähnlicher Aufruf funktioniert über Postman.

Antwort

1

Die Option: headers ist eindeutig plural, aber da Sie basic auth verwenden, können Sie auch die Basisauthentifizierung von HTTParty verwenden. So Ihre Anfrage würde:

username = "YOUR-USER-HERE" 
password = "YOUR-PASSWORD-HERE" 

token = HTTParty.post("https://api.vimeo.com/oauth/authorize/client", 
     body: {:grant_type => 'client_credentials'}, 
     basic_auth: { username: username, password: password } 
    ) 

Ihre creds Mit (meinst du echte creds schreiben?) Ich habe

{"access_token"=>"REDACTED", "token_type"=>"bearer", "scope"=>"public", "app"=>{"name"=>"Fable", "uri"=>"/apps/REDACTED"}} 
+0

Mit Basic_Auth statt Header gearbeitet! Aber jede Idee, warum die Header-Option nicht funktioniert? Auch habe ich beobachtet, dass das Problem nur für den Nachruf kommt, die Header für Anruf funktioniert gut. (Als Nebenbemerkung, diese App war nur für Testzwecke, also glaube ich, dass das Posten von echten Anmeldeinformationen nichts schaden würde?) – penguin2048

Verwandte Themen