通过OAuth2 gem从foursquare获取client_id

时间:2011-12-06 09:25:56

标签: ruby-on-rails oauth foursquare

我想从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

2 个答案:

答案 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_keysecret,这应该是您使用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时会得到它。它与特定用户无关,但与您的应用程序无关。