Ruby中的OAuth2和Yelp访问

时间:2016-10-06 21:45:07

标签: ruby oauth-2.0 yelp

我正在尝试使用Yelp API。 v3正在使用OAuth2,但我不确定所有数据的处理。

这是获取与密钥关联的令牌的代码:

client = OAuth2::Client.new(  ENV[ 'YELP_APP_ID' ], 
                                  ENV[ 'YELP_APP_SECRET' ],
                                  :token_url => ENV[ 'YELP_OAUTH2_TOKEN_URL' ],
                                  :site => ENV[ 'YELP_ENDPOINT_URL' ],
                                  :access_token_method => :post, 
                                  :grant_type => :client_credentials)

puts("this is my blabla #{client}")
code =  client.auth_code.authorize_url(:redirect_uri => "http://localhost:4000")
token = client.auth_code.get_token(code, :redirect_uri => "http://localhost:4000")
puts("this is my blabla #{token.token}")
OAuth2::AccessToken.new(client, token.token)

TOKEN_URL/oauth2/tokenENDPOINThttps://api.yelp.com

我收到的代码如下:

69gSGF4oPNzyd2GTK824wlYOAwX8ibbsdEF5bmPsqUVj22WqK6X5alGRv0cahoXL-W9z0TVHvMxgWZNk2xpwDPJFLKbZBCuDfHQEDImlG6dPajgp23B-NFGzj

首先,我能确定获得正确的令牌吗?

我也不确定redirect_uri。我的代码将运行Heroku,但现在它在我的本地机器上。

我可以使用:@domain代替local吗?

我问这个是因为,当向Yelp发送请求时,它总是给我相同的结果。我要求寿司,它送回五家餐馆。

我首先要确保我的OAuth2处理正确。

1 个答案:

答案 0 :(得分:0)

这个适用于你:

app_id = "Your APP ID HERE"
app_secret ="Your APP secret here"


import requests

def get_yelp_token(app_id, app_secret):           
    payload = {'grant_type': 'client_credentials', 'client_id': app_id, 'client_secret': app_secret}
    file1 = requests.post('https://api.yelp.com/oauth2/token?', params = payload)
    print file1.text 

get_yelp_token(app_id, app_secret)