我想从foursquare获取用户场地历史记录。我知道首先用户应该访问我的应用程序。我正在使用OAuth2 gem。如何获取用户的client_id?
cli = OAuth2::Client.new('CLIENT_ID', :authorize_url => "/oauth2/authorize", :token_url => "/oauth2/access_token", :site => 'https://foursquare.com')
好吧,我只是在编辑我的问题。我理解为什么必须使用client_id(感谢Martin和umesh awasthi)。我问的是为什么我不能得到用户的令牌?我的整个代码是;
cli = OAuth2::Client.new(client_id, client_secret, :authorize_url => "/oauth2/authorize", :token_url => "/oauth2/access_token", :site => 'https://foursquare.com')
cli.auth_code.authorize_url(:redirect_uri => "http://localhost:3000")
token = cli.auth_code.get_token('authorization_code_value', :redirect_uri => "http://localhost:3000/person/index")
response = token.get('api/resource', :params => {'query_foo' => 'bar'})
response.class.name
答案 0 :(得分:2)
请参阅Martin
的答案客户端ID是与您的应用程序相关联的唯一ID。所有OAuth服务提供商都需要此客户端ID来识别自己。
我建议你先对OAuth有一些基本的了解,因为这个协议适用于两件大事
1. Client_id: this is a unique id assigned to your application you
create on any Oauth service provider or when you register you application.
2. Secret_key:This is another part of Oauth communication which use to
Authenticate the consumer i.e you application.
虽然像谷歌这样的Oauth系统提供匿名呼叫,但根本没有受到鼓励。
因此,无论您使用哪种OAuth服务,都需要向他们注册您的应用程序并获取client_key
和secret
,这应该是您使用OAuth进行的每次通信的一部分
这是从forsquare网站采取的快速步骤
Redirect users who wish to authenticate to
https://foursquare.com/oauth2/authenticate
?client_id=YOUR_CLIENT_ID
&response_type=code
&redirect_uri=YOUR_REGISTERED_REDIRECT_URI
如果用户接受,他们将被重定向回
https://YOUR_REGISTERED_REDIRECT_URI/?code=CODE
一旦用户授权您OAuth将使用您需要再次传递它们的代码重定向以获取访问令牌
Your server will make a request for
https://foursquare.com/oauth2/access_token
?client_id=YOUR_CLIENT_ID
&client_secret=YOUR_CLIENT_SECRET
&grant_type=authorization_code
&redirect_uri=YOUR_REGISTERED_REDIRECT_URI
&code=CODE
响应将是JSON
{ access_token: ACCESS_TOKEN }
将此用户的此访问令牌保存在您的数据库中。希望此sw水可以帮助您
答案 1 :(得分:0)
client_id是您的应用程序的client_id,您在注册应用程序here时会得到它。它与特定用户无关,但与您的应用程序无关。