2016-03-04 25 views
7

Belirli bir hizmete beta sürümünün bir parçası olarak REST API erişimini kazandım. Yetkilendirmenin OAuth2 olduğunu söylendi. Ben çalışıyorumOAuth2'yi kullanıcı adı ve parola ile kullanma

client = OAuth2::Client.new(key, secret, :site => site) 
token = client.password.get_token('[email protected]', 'your_password') 
access_token = OAuth2::AccessToken.new(client, token) 
JSON.parse access_token.get("/v1/users/me").body rescue {} 

: Ben de Ruby bir kod örneği var

  • GİZLİ

    1. kimliği
    2. SİTESİ:

      aşağıdaki var aynı snippet'i python'daile uygulamak başarısızpaketi:

      consumer = oauth2.Consumer(key=self._client_id, 
                secret=self._client_secret) 
      request_token_url = "api.theservice.com/" 
      token = oauth2.Token(key=self._email, secret=self._password) 
      client = oauth2.Client(consumer, token) 
      resp, content = client.request(request_token_url, "GET") 
      pprint.pprint(resp) 
      pprint.pprint(content) 
      resp, content = client.request(request_token_url + 'v1/users/me', "GET") 
      pprint.pprint(resp) 
      pprint.pprint(content) 
      

      ikinci tepki aşağıdakileri içerir:

      'www-authenticate': 'Bearer realm="Doorkeeper", error="invalid_token", ' 
              'error_description="The access token is invalid"', 
      

      Ayrıca, bir belirteç olmayan bir oauth2.Client nesne oluşturma çalıştı ve bir access_token ilk tepkisini kontrol ama hiçbir şey sıralama geldi.

      Burada kimlik doğrulamanın doğru yolu nedir?

  • +0

    Twitter gibi üç aşamalı OAuth [buradan] açıklanan kullanarak bu hizmeti mi (https://github.com/joestump/python-OAuth2/wiki/Heyecan-Üç ayaklı-OAuth)? – skyline75489

    +0

    Bilgim için değil. –

    cevap

    0

    Ne oauth2 ne de istek-oauth2'yi görmediğim kadarıyla kullanıcı adı/parola stratejisini desteklemez. Bu nedenle, erişim belirtecini kendiniz almanız gerekir.

    ayrıntılar için API docs kontrol, ama genel olarak böyle bir şey olmalı:

    r = requests.post('http://api.theservice.com/auth', 
            data = {'email':email, 'password': password}).json() 
    
    token = oauth2.Token(key=r['key'], secret=r['secret']) 
    consumer = oauth2.Consumer(key=self._client_id, 
              secret=self._client_secret) 
    
    client = oauth2.Client(consumer, token)