【问题标题】:Twitter API authentication keynotfoundexceptionTwitter API 身份验证密钥未找到异常
【发布时间】:2012-07-06 10:58:32
【问题描述】:

我已经阅读了所有关于使用 WP7 的 twitter api 的教程。这是我第一次使用 oauth,它可能会很混乱。我正在努力做到这一点,以便我的用户可以在推特上发布消息和图片。我浏览了关于 oauth 和其他几个教程的本教程(但我正在使用这个 atm):

http://sudheerkovalam.wordpress.com/2010/08/28/a-windows-phone-7-twitter-application-part-1/#comment-251

还在 stackoverflow 上找到了一些关于在此处发布照片的帮助:

Upload image directly to twitter

但是对于上面博客文章中描述的身份验证部分,我一直在“OAuthTokenKey = parameters["oauth_token"];”行上得到一个“KeyNotFoundException”,我试图弄清楚,但我第一次想不出任何东西这样做。其他地方似乎没有太多帮助,因为每个教程都使用了难以组合的不同技术,所以我来找你们。如果您知道修复方法,请告诉我!或者,如果您知道最近有一个现在很好用的教程,请告诉我!

【问题讨论】:

  • OAuthTokenKey = parameters["oauth_token"]; 之前放置一个断点并尝试找出你在e.Response 中得到了什么
  • 我查看了 e.response,看起来我遇到了一些超时,但我不知道该怎么做。 Response = {MS.Internal.InternalMemoryStream} ReadTimeout = '(e.Response).ReadTimeout' 引发了“System.InvalidOperationException”类型的异常 WriteTimeout = '(e.Response).WriteTimeout' 引发了“System.InvalidOperationException”类型的异常'

标签: c# api windows-phone-7 twitter oauth


【解决方案1】:

我在Upload image directly to twitter 更新了 LINQ to Twitter 示例的代码,为方便起见,在此重复:

    private void PostButton_Click(object sender, RoutedEventArgs e)
    {
        if (string.IsNullOrWhiteSpace(TweetTextBox.Text))
            MessageBox.Show("Please enter text to tweet.");

        ITwitterAuthorizer auth = SharedState.Authorizer;
        if (auth == null || !auth.IsAuthorized)
        {
            NavigationService.Navigate(new Uri("/OAuth.xaml", UriKind.Relative));
        }
        else
        {
            var twitterCtx = new TwitterContext(auth);

            var media = GetMedia();

            twitterCtx.TweetWithMedia(
                TweetTextBox.Text, false, StatusExtensions.NoCoordinate, StatusExtensions.NoCoordinate, null, false,
                media,
                updateResp => Dispatcher.BeginInvoke(() =>
                {
                    HandleResponse(updateResp);
                }));
        }
    }

此页面上有一个示例,您可以加载和测试:

http://linqtotwitter.codeplex.com/wikipage?title=LINQ%20to%20Twitter%20Samples

我认为部分问题可能是我在上一页发布了一个同步示例,该示例适用于客户端和 Web 应用程序,但不适用于 WP7。

在 Windows Phone 中执行 OAuth 时的一个重要提示是,您必须将模拟器上的时钟设置为当前时间。还要注意时区,这可能会让事情变得很糟糕。 OAuth 使用必须与 Twitter 服务器同步的时间戳。

我最近还修复了一些与 Twitter 近期变化相关的问题,因此,如果您在其他查询中遇到问题,可在此处下载源代码,您可以在此处获取最新变化:

http://linqtotwitter.codeplex.com/SourceControl/list/changesets

【讨论】:

    【解决方案2】:

    试试这个进行身份验证,它对我很有用,我正在我的应用中使用它:

    http://igrali.com/2012/06/17/twitter-authentication-from-windows-phone-app/

    之后,您将获得使用此处提供的样本之一上传照片所需的信息。

    请记住,您在问题中提到的第一篇博文是 2010 年的。从那时起,Twitter 方面的情况可能已经发生了变化(而且可能已经发生了变化!)。

    【讨论】:

    • 很棒的教程,你知道我为什么会收到这个错误吗?我通过 NuGet 安装包并在项目“TweetSharp.TwitterService”中引用它不包含“GetAccessToken”的定义,并且找不到接受“TweetSharp.TwitterService”类型的第一个参数的扩展方法“GetAccessToken”(你是缺少 using 指令或程序集引用?)
    • 对 service.GetAccessToken() 也说了同样的话
    • 您是否尝试过使用 TweetSharp 添加;在类/文件的开头?
    • 是的,我添加了“使用 TweetSharp;”一切正常,它可以识别“TwitterService”和 TweetSharp 中的其他类,但不能识别这些方法。我什至尝试创建另一个测试项目和同样的问题。
    • 这很奇怪,我添加了相同的库,它对我有用...你现在可以工作了吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-20
    • 2019-09-04
    • 1970-01-01
    • 2016-01-29
    • 2011-07-25
    • 2020-06-20
    相关资源
    最近更新 更多