[原创] 通过微信网页授权获取用户信息

微信 网页授权 api

2015-07-23 2290

通过微信网页授权接口获取用户个人信息

微信接口地址如下:

http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html

不写那么多废话了,直接上代码,代码中会有一些写日志操作的地方,如果不需要可自行删除

需要调用api使用了

gem 'rest-client'

进入页面


#公众号的唯一标识 
$appid = '自己公众账号的appid'  
#公众号的appsecret 
$app_secret ='自己公众账号的appsecret' 
def wx_oauth2    
    #授权后重定向的回调链接地址,请使用urlencode对链接进行处理  
    redirect_url = "http://test.lixuanqi.com/common/oauth_back"   
    #应用授权作用域,snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid),snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且,即使在未关注的情况下,只要用户授权,也能获取其信息)  
    scope = 'snsapi_userinfo'   #非必须参数 重定向后会带上state参数,开发者可以填写a-zA-Z0-9的参数值,最多128字节  
    state = 'yuluo'  
    str_url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=#{$appid}&redirect_uri=#{redirect_url}&response_type=code&scope=#{scope}&state=#{state}#wechat_redirect"  redirect_to str_url 
end
 
 
####回调页面

def oauth_back   

    page_head_data('获取微信用户信息','','') 
    if params[:code].blank? 
        render :text => 'err'  
    else  
        str_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=#{$appid}&secret=#{$app_secret}&code=#{params[:code]}&grant_type=authorization_code"  token_data = JSON.parse(RestClient.get(str_url)) 
        Rails.logger.info(token_data) 
        if token_data["errcode"].blank? 
            Rails.logger.info "access_token值为:"+token_data["access_token"] 
            str_user_info_url = "https://api.weixin.qq.com/sns/userinfo?access_token=#{token_data["access_token"]}&openid=#{token_data["openid"]}&lang=zh_CN"  Rails.logger.info str_user_info_url  
            str_user_info = RestClient.get(str_user_info_url) 
            Rails.logger.info str_user_info.to_s 
            #render json:  str_user_info   
            @user_info = JSON.parse(str_user_info)         
        else   
            Rails.logger.info token_data.to_s 
            render json: token_data  
        end    
    end
 end
视图部分,就是一个简单的table展示用户信息的页面