Ruby Rest_client 和 Windows LIVE 连接 OAUTH Wrap

发布于 2024-11-03 07:19:40 字数 1291 浏览 0 评论 0原文

大家好,我正在尝试让我的 Rails 应用程序与 Windows LIVE 对话(通过 OAuth Wrap),以便我可以检索联系人列表。我正在使用rest_client gem 来执行此操作。这是它的操作代码:


 def hotmail

    app_id = 'some_id'
    app_sec = 'some_secret'
    app_callback = 'http://my.callback.com/same/as/getting/verification_code'
    app_var = params[:wrap_verification_code]

    encoded = "wrap_client_id=#{app_id}&wrap_client_secret=#{app_sec}&wrap_verification_code=#{app_var}&wrap_callback=#{app_callback}".encode!('UTF-8')

    begin
     r =  RestClient.post("https://consent.live.com/AccessToken.aspx", encoded.bytes.to_a, {:content_type => 'application/x-www-form-urlencoded', :content_length => encoded.bytesize})
    rescue => e
      puts e.message
    end
    render :text => 'hello'
  end

我基于 ac# 示例 http:// msdn.microsoft.com/en-us/library/ff750952.aspx(注意:http://www.goatly.net/2010/12/23/401-unauthorized-when-acquiring-an-access-token-windows-live-sdk.aspx 显示正确的但是

我不断收到 401 Unauthorized,所以我在想是我错误地使用rest_client 的方式吗?在表单发布期间我还需要做其他事情吗?

任何提示都会非常有帮助:) 提前致谢。

Hi all I am trying to get my rails app to talk to Windows LIVE (through OAuth Wrap) so I can retrieve a list of contacts. I am using the rest_client gem to do this. Here is the action code for it:


 def hotmail

    app_id = 'some_id'
    app_sec = 'some_secret'
    app_callback = 'http://my.callback.com/same/as/getting/verification_code'
    app_var = params[:wrap_verification_code]

    encoded = "wrap_client_id=#{app_id}&wrap_client_secret=#{app_sec}&wrap_verification_code=#{app_var}&wrap_callback=#{app_callback}".encode!('UTF-8')

    begin
     r =  RestClient.post("https://consent.live.com/AccessToken.aspx", encoded.bytes.to_a, {:content_type => 'application/x-www-form-urlencoded', :content_length => encoded.bytesize})
    rescue => e
      puts e.message
    end
    render :text => 'hello'
  end

I base this on a c# example http://msdn.microsoft.com/en-us/library/ff750952.aspx (note: http://www.goatly.net/2010/12/23/401-unauthorized-when-acquiring-an-access-token-windows-live-sdk.aspx shows the correct payload)

However I keep getting 401 Unauthorized, so I am thinking is the way I am using rest_client incorrectly? During a form post is there somthing else I need to do?

ANy hints will be really helpful :) thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

魂归处 2024-11-10 07:19:40

发现问题了。 C# 代码说它发布字节数组,但事实并非如此,只需直接发布编码的 st 就足够了。

Found the problem. The C# code says it post the byte array but thats not true just post the encoded st direct is enough.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文