0

当用户使用 asp.net 的 oauth 模板登录时,我正在尝试获取 facebook 客户端的访问令牌。但是当我尝试在互联网上找到的一些方法时,我无法获取访问令牌;

AuthenticationResult result = OpenAuth.VerifyAuthentication("RegisterExternalLogin.aspx");                
string actok = result.ExtraData["accesstoken"];

这次尝试没有成功。如何获取访问令牌?

4

1 回答 1

1

我看到没有人回答你的问题,即使已经 10 天了,所以我会尝试一下。

您提到您正在使用 asp.net 的 OAuth 模板。所以我认为你正在看这条线

AuthenticationResult result = OpenAuth.VerifyAuthentication("RegisterExternalLogin.aspx"); 

在 AccountController.cs 的 ExternalLoginCallback() 操作中

据我所知,您的语法是正确的。事实上,我自己也测试过它并且它有效。我想您可以尝试另一种访问同一属性的方法

String myaccesstoken_value1 = result.ExtraData.Values.ToArray()[5];

这将为您提供与 result.ExtraData["accesstoken"] 相同的结果

如果这也不起作用,那么我会认为身份验证本身存在一些问题,而不是您的语法。我假设您有 VS2012 Express,因此请使用调试器查看变量“结果”中存在哪些值。如果它是空的,那么它会表明为什么你的第二个语句出错了,它还表明在你到达这一点之前代码中存在问题。

在测试期间还要记住,当您使用 OAuth 提供程序(例如 Facebook)登录您的应用程序时,即使您退出网站,您仍会继续保持登录到 Facebook 的状态。你实际上必须去 facebook.com 并在那里单击注销(除非你在你的 asp.net 应用程序中编写一些额外的代码来进行远程注销)。我不知道这是否适用于你的情况,只是给你一个提示。

如果这有帮助,请投票。

于 2013-06-16T00:46:48.590 回答