如何在 C# 中解码 Canvassigned_request 的 OAuth 2.0?
我能够使用示例 这里,但我无法解码有效负载。 Facebook 文档指出,signed_request 中的第二个参数是一个 base64url 编码的 JSON 对象。在 PHP 中,有效负载使用 json_decode 进行解码:
$data = json_decode(base64_url_decode($payload), true);
C# 中的等效项是什么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
以下内容应该可以帮助您..
(注意:JObject 引用来自 JSON.NET,可通过 http://james.newtonking.com/projects/json-net.aspx 和 http://json.codeplex.com/)
使用的命名空间:
代码:
这是我在 FaceSharp 中使用的..希望它有帮助
The following should help you out..
(Note: The JObject reference is from JSON.NET available via http://james.newtonking.com/projects/json-net.aspx and http://json.codeplex.com/)
Namespaces used:
Code:
It is what I'm using in FaceSharp.. hope it helps
相同的代码,但没有 Json.NET 依赖:
您可以像这样使用它:
Same code but without Json.NET dependency:
You can use it like this:
抱歉,有点像 StackOverflow 菜鸟,但对于任何尝试使用 JohnK 的方法进行解码的人来说,它都非常有效,对于像我这样的人和其他有 Base64 编码问题的人来说,只需一些实现技巧......
Json 参考也是可从 nuGet
http://developers.facebook.com/docs/guides/canvas/# 获取auth 更详细地解释了 ["signed_request"] 元素,但简单地说,当 Facebook 发回时(在我的例子中是在用户注册请求之后),您可以从帖子中获取数据,但字符串位于两个部分,用“.”分隔- 因此,尝试解码 ["signed_request"] 将失败,因为“.”不是 Base64 字符。第一部分是签名,可让您验证帖子是否来自 Facebook(只有我们和他们知道要解码的 sig),第二部分是有效负载。
所以,我让它与以下代码(在 MVC 控制器中)一起使用,源是 Facebook 注册按钮......
然后控制器代码响应注册请求
希望这对某人有帮助,如果这应该是的话,我很抱歉编辑/反馈或其他...
Sorry, bit of a StackOverflow noob, but for anyone trying to use JohnK's method to decode, it works brilliantly, just a couple of implementation tips for anyone like me and the others with the base64 encoding issue....
The Json reference is also available from nuGet
http://developers.facebook.com/docs/guides/canvas/#auth explains the ["signed_request"] element in more detail, but put simply, when Facebook posts back (in my case after a user registration request), you can get the data from the post, but the string is in TWO PARTS, separated by a '.' - As such, trying to decode ["signed_request"] will fail as '.' isn't a Base64 char. The first part is the signature to allow you to validate that the post came from Facebook (only us and them know the sig to decode) and the second is the payload.
So, I got this to work with the following code (in a MVC controller), source is a Facebook registration button....
and then the Controller code responds to the registration request
hope this helps someone, and sorry if this should have been edit/feedback or whatever...
查看 Codeplex 上的 Facebook .Net SDK http://facebooksdk.codeplex.com。它将为您处理所有“脏活”。例如,我可以从控制器操作或 Page_Load 上调用以下代码。
就是这样。您实际上不需要担心 facebook 如何将数据返回给您或对其进行解码。 SDK 会为您处理所有这些事情。
Check out the Facebook .Net SDK on Codeplex http://facebooksdk.codeplex.com. It will handle all the 'dirty work' for you. For example, I could call the following code either from a controller action or on Page_Load.
Thats it. You don't really need to worry about how facebook is returning the data to you or decoding it. The SDK handles all that for you.
我已经通过这个更改了 DecodePayload,它对我来说工作得很好:
i have change the DecodePayload by this and it work fine for me:
以下是如何使用 Facebook SDK 执行此操作
Here's how to do it using Facebook SDK