Rails 微信网页授权失败的问题

sforce100 · 2014年06月16日 · 最后由 jeff_duan 回复于 2014年06月24日 · 8145 次阅读

使用了一下两个 gem 做微信的网页授权,

gem 'omniauth'
gem 'omniauth-weixin'

奇怪的是当我点击回调的连接以后,微信向我服务器发送了三次回调,前两次连报错都没有,但是第三次是成功的。但最后微信页面上显示找不到页面。

回调地址后面加上#wechat_redirect

@dddd1919 已经加了

https://open.weixin.qq.com/connect/oauth2/authorize?appid=xxxxxxx&redirect_uri=http://callbak.com&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect

或者是你的服务相应太慢了

号认证了吗?

@sforce100 ,话说做开放授权别用那些特定的 GEM,只要一个 Oauth2 稍加修改就 ok 了, 这个是我写的修改后的用法,其实只要改两个属性就好了。

1.安装 oauth2 Gemfile gem 'oauth2', :git => 'https://github.com/oldfritter/oauth2' 2.业务代码范例 Ruby 代码 收藏代码 require 'oauth2'
@client = OAuth2::Client.new my.key, my.sercet, site: 'https://api.weibo.com'
@client.options[:authorize_url] = '/oauth2/authorize'
@client.options[:token_url] = '/oauth2/token'
(注:由于默认的认证是提交到 site/oauth/authorize,而新浪微博是https://api.weibo.com/oauth2/authorize, 所以就有了上面两行) Ruby 代码 收藏代码 获取授权 code
@client.auth_code.authorize_url redirect_uri: call_back_url # call_back_url 是你的回调 url

获取授权的 access_token

@token = @client.auth_code.get_token code, redirect_uri: call_back_url

向 Weibo 推送一条消息

@token.post '/2/statuses/update.json', params: {'access_token' => @token.token, 'status' => 'test message'}

原文:http://oldfritter.iteye.com/blog/2068210

@oldfritter 谢谢你的提示,你这方法也不错。但是我的需求比较简单就是可以直接再微信菜单打开网页(需要验证绑定过,所以需要 openid),所以我通过网页授权那个 openid。不知道为什么拿 access token 和获取用户信息这一步很慢,甚至超过 5s。后来调整一下流程,只用 scope=snsapi_base,还有先验证是否登录过才跳授权。

你说的这个流程就是再正常不过的微信 oauth2 流程. 首先要确保你在微信菜单里的回调 url 带参数都要 url encoding. 其次,token 必须设置正确。

一般情况点击了餐单会立即弹出 oauth 授权页面,这一步应该相当快。点击确认后,如果你从这里开始很慢,说明你的逻辑或者各种 key 有错,微信在尝试 5s 重试。

我做过的速度很快啊,难道你的服务器在国外?

你可以试试我的 www(dot)88jimo(dot)com

需要 登录 后方可回复, 如果你还没有账号请 注册新账号