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 – 如何使用文件名中的冒号克隆文件
