Google OAuth2验证

参考连接:
1. Gem包: Signet
2.OAuth2的一些介绍
3.API控制台
4.Google 的 OAuth 2.0
5.Google API 测试

理解 OAuth 2.0 流程

Click Here

在使用Google API之前,
1.先注册一个Google 开发者账户
2.在Google Developer Console 新建一个Project

点击建立专案

在此填写你要创建的专案名

3.下面是Google的API列表,可以在这里选择要启用的API,例如我选择的是YouTube Data API
这里是Google支持的API的列表,可以在这里选择启用哪一个

点击YouTube Data API 就会看到
启用YouTube Data API v3

4.在控制台左侧,点击凭证创建OAuth
创建OAuth

点击创建新的用户端ID(在这里我创建的是网络应用程式,在这里已授权的JavaScript可以不做设置,主要是下面的授权导向URI要是一个可访问的域名,以便Google服务器可以将我们请求的参数返回.URI:http://xxx.xx.com/auth/oauth2callback (auth是controller,oauth2callback是auth中的方法)
选择创建

创建好之后,会自动生成client_id和client_secrect
用户端ID和secrect

5.做完以上步骤之后就可以着手写代码了.(创建流程走一遍吧)

   $ rails new youtube -d=mysql
   $ cd youtube
   在Gemfile中添加一些Gem包
   gem 'signet'
   gem 'rest-client'
   gem 'unicorn'
   $ bundle install
   $ rails g controller auth
   app/controllers/auth_controller.rb
      def index
        client = Signet::OAuth2::Client.new(
        authorization_uri:
        "https://accounts.google.com/o/oauth2/auth?",
        client_id: "xxxxxxxxxx",
        client_secret: "xxxxxxxxx",
        redirect_uri: "http://xxx.xx.com/auth/oauth2callback",
        scope: "https://www.googleapis.com/auth/youtube")
        options = {response_type: "code",approval_prompt: :force,access_type: :offline}
        @res = client.authorization_uri(options).to_s (生成授权链接)
    end

    def oauth2callback
        logger.info "***********************************"
        logger.info  params[:code](在授权之后,google服务器返回的code)
         client = Signet::OAuth2::Client.new(
            client_id: "xxxxxxx",
            client_secret: "xxxxxxxxxxx",
            token_credential_uri: "https://accounts.google.com/o/oauth2/token",
            redirect_uri: "http://xxx.xx.com/auth/oauth2callback")
        client.code=(params[:code])
        logger.info res = client.fetch_access_token!(获取access_token)
        logger.info "***********************************"
    end
  end

  返回的参数类似与
  {
  "access_token":"1/fFAGRNJru1FTz70BzhT3Zg",
  "expires_in":3920,
  "token_type":"Bearer",
  "refresh_token":"1/6BMfW9j53gdGImsixUH6kU5RsR4zwI9lUVX-tqf8JXQ"
  }

将rails项目上传到服务器并启动,可在log里查看是否获取到access_token

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值