我看到没有人回答你的问题,即使已经 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 应用程序中编写一些额外的代码来进行远程注销)。我不知道这是否适用于你的情况,只是给你一个提示。
如果这有帮助,请投票。