windows-phone-7 – Twitter,OAuth,Hammock,TweetSharp和Windows
发布时间:2020-12-14 05:28:28 所属栏目:Windows 来源:网络整理
导读:我一直在努力让OAuth在我的 Windows Phone应用程序中使用Twitter,但我找到的所有信息都已过时或难以理解.我最终找到了一个地方,当我发现这个博客发布 http://samjarawan.blogspot.co.uk/2010/09/building-real-windows-phone-7-twitter_18.html时,它让我一直
我一直在努力让OAuth在我的
Windows Phone应用程序中使用Twitter,但我找到的所有信息都已过时或难以理解.我最终找到了一个地方,当我发现这个博客发布
http://samjarawan.blogspot.co.uk/2010/09/building-real-windows-phone-7-twitter_18.html时,它让我一直获得访问令牌,此时它失败了.
我的代码几乎与博客文章中的代码相同,几乎只是改变了消费者密钥和消费者秘密.即使他们的应用程序也无效.它显示Twitter登录屏幕正常,并成功进行身份验证,但在RequestAccessToken函数中,它在此时失败: if (String.IsNullOrEmpty(twitteruser.AccessToken) || String.IsNullOrEmpty(twitteruser.AccessTokenSecret)) { Dispatcher.BeginInvoke(() => MessageBox.Show(response.Content)); return; } 真正烦人的事情是消息框只显示Unicode替换字符( )而没有别的.我还检查了response.StatusCode,它没关系,所以我可以告诉你没有错误. 如果有人可以帮我解决这个问题,那就太好了.我已经看过其他需要用户输入PIN的教程,但是我也无法使用其中任何一个. 编辑:我刚刚尝试让TweetSharp工作,但再次无法获得访问令牌.这是我用于TweetSharp的代码: public partial class TwitterAuthorisationPage : PhoneApplicationPage { private const string consumerKey = "myKey"; private const string consumerSecret = "mySecret"; // These are the correct values for my app private const string requestTokenUri = "https://api.twitter.com/oauth/request_token"; private const string oAuthVersion = "1.0a"; private const string authorizeUri = "https://api.twitter.com/oauth/authorize"; private const string accessTokenUri = "https://api.twitter.com/oauth/access_token"; private const string callbackUri = "http://bing.com"; private TwitterService twitterService = new TwitterService(consumerKey,consumerSecret); private OAuthRequestToken _requestToken = null; public TwitterAuthorisationPage() { InitializeComponent(); } protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) { base.OnNavigatedTo(e); twitterService.GetRequestToken((requestToken,response) => { if (response.StatusCode == HttpStatusCode.OK) { _requestToken = requestToken; Dispatcher.BeginInvoke(() => BrowserControl.Navigate(twitterService.GetAuthorizationUri(requestToken))); } else { Dispatcher.BeginInvoke(() => MessageBox.Show("Failed to connect to Twitter. Please try again.n" + response.StatusDescription)); } }); } private void ConfirmButton_Click(object sender,RoutedEventArgs e) { twitterService.GetAccessToken(_requestToken,PINEntry.Text,(accessToken,response) => { if (response.StatusCode == HttpStatusCode.OK) { //These lines just print ? System.Diagnostics.Debug.WriteLine(accessToken.Token); System.Diagnostics.Debug.WriteLine(accessToken.TokenSecret); twitterService.AuthenticateWith(accessToken.Token,accessToken.TokenSecret); twitterService.VerifyCredentials((user,verifyResponse) => { if (verifyResponse.StatusCode == HttpStatusCode.OK) { Dispatcher.BeginInvoke(() => MessageBox.Show(user.Name)); } else { // Fails here Dispatcher.BeginInvoke(() => MessageBox.Show("Failed to connect to Twitter. Please try again.1n" + verifyResponse.StatusDescription)); } }); } else { Dispatcher.BeginInvoke(() => MessageBox.Show("Failed to connect to Twitter. Please try again.0n" + response.StatusDescription)); } }); } } 编辑2:这可能与此有关吗? https://dev.twitter.com/blog/ssl-upgrade-for-twitterapi 解决方法
我解决了!事实证明Twitter正在返回访问令牌Gzipped.使用博客文章中描述的方法,我不得不改变第二个RestClient,如下所示:
var client = new RestClient { Authority = "https://api.twitter.com/oauth",Credentials = credentials,HasElevatedPermissions = true,SilverlightAcceptEncodingHeader = "gzip",DecompressionMethods = DecompressionMethods.GZip }; 现在它有效! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- xaml – Windows Phone 7 – 为所选ListBoxItem中的特定控件
- windows-server-2012 – 从Windows Server 2012 R2中删除Hy
- 相同的简单源代码,Windows上的不同二进制文件
- Windows下的Blackberry Emulator测试网站
- windows – 我应该用哪个Java版本运行Jenkins?
- .net – 我收到此错误无法执行请求,因为无法在IIS 5.1 win
- windows – 如何关闭从visual studio中打开的“孤立”控制台
- Windows命令中的“2>&1”有什么作用?
- 散列函数从整数坐标对提供唯一的uint
- windows – 如何使用文件名中的冒号克隆文件