Gem [已解决] 使用 omniauth-weibo-oauth2 的问题

neilalaer · 发布于 2012年05月25日 · 最后由 void_dawn 回复于 2016年10月29日 · 10140 次阅读
96

Update: 从日志中可以看到(weibo) Callback phase initiated出现了两次;另外,终端中打印输出omniauth代码strategy.rb中的auth_hash,其实已经能看到明文的access token,说明第二次callback是多余的并且很可能是产生错误的原因,在“如何去掉第二次callback”上花了不少时间,无果。

最后发现,因为参考了不同的网上教程,分别在config/initializers/devise.rb和config/initializer/omniauth.rb中两次填写了同一个provider.

为什么omniauth gem的机制不是覆盖同名provider,而是创建两个实例呢?

Hinted by: http://goo.gl/bcKMO


Update: 针对(error:redirect_uri_mismatch)的问题,新浪论坛http://forum.open.weibo.com/thread.php?fid=5 里的大多碰到同样问题,其实新浪服务器端需要完全匹配完整的URI,比如:少了“www”不行;本地环境必须以"127.0.0.1访问"(新浪应用控制台中的“应用信息”->"高级信息"中的"授权回调页"框不接受“localhost”)。


碰到的情况 参考了devise的文档http://goo.gl/5HgXj 所述步骤(auth相关),使用omniauth-weibo-oauth2 gem,总是碰到以下错误,无法进入授权页面。 ‘你所访问的站点在新浪微博的认证失败,...(error:redirect_uri_mismatch)’

地址栏信息为 https://api.weibo.com/oauth2/authorize?response_type=code&client_id=342xxxxxx &redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fusers%2Fauth%2Fweibo%2Fcallback.

网站应用,“应用信息->高级信息”->"OAuth2.0 授权设置"中的信息 授权回调页:http://127.0.0.1:3000/users/auth/weibo/callback

参考了devise的文档http://goo.gl/5HgXj user_omniauth_callback_path(:weibo) 确实为 http://localhost:3000/users/auth/weibo/calback

我的问题 请问,哪里的信息不对?应该如何配置?

共收到 7 条回复
96

有点晕,我把本地的访问地址改成http://127.0.0.1:3000, 总算能导航到授权页面了。

新的问题又出来了,invalid authorization code (error code: 21325),

Started GET "/users/auth/weibo" for 127.0.0.1 at 2012-05-25 15:06:18 +0800
(weibo) Request phase initiated.

Started GET "/users/auth/weibo/callback?code=60f9abd48b0300832834d49df8fd3xxx" for 127.0.0.1 at 2012-05-25 15:06:18 +0800
(weibo) Callback phase initiated.
(weibo) Callback phase initiated.
(weibo) Authentication failure! invalid_credentials: OAuth2::Error, invalid_grant: invalid authorization code:60f9abd48b0300832834d49df8fd3xxx
{"error":"invalid_grant","error_code":21325,"request":"/oauth2/access_token","error_uri":"/oauth2/access_token","error_description":"invalid authorization code:60f9abd48b0300832834d49df8fd3xxx"}
Processing by Users::OmniauthCallbacksController#failure as HTML
  Parameters: {"code"=>"60f9abd48b0300832834d49df8fd3xxx"}
Redirected to http://127.0.0.1:3000/users/sign_in
Completed 302 Found in 184ms
96

见原帖更新部分。

3974

#2楼 @neilalaer 你好,同样的问题,可否给个邮件或者QQ,咨询一下。

2099

改本地hosts

127.0.0.1 yourhost

然后访问:

yourhost:3000/auth/weibo
8807

您好,我碰到相同的问题:”你所访问的站点在新浪微博的认证失败,...(error:redirect_uri_mismatch)“,我也尝试改成127.0.0.1,但还是不能进入授权页面,请问是怎么回事?是不是因为我的网站没有备案,只是获取了key和scret,所以在无法进入授权页面?

96

只要將瀏覽器上的URL由原本的http://localhost:3000 改為 http://127.0.0.1:3000 再點微博登入就可以解決

28615

最近在做weibo第三方,Authentication failure! invalid_credentials: OAuth2::Error, invalid_request: miss redirect uri. {"error":"invalid_request","error_code":21323,"request":"/oauth2/access_token","error_uri":"/oauth2/access_token","error_description":"miss redirect uri."} ,我在微博开放平台已经配置redirect_uri了,怎么还说我miss redirect uri ?

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