在WP7上使用Google oAuth
本文关键字:Google oAuth WP7 | 更新日期: 2023-09-27 18:04:15
我在windows phone 7上试用了一个使用谷歌任务服务的小应用程序,问题是我无法登录。
我已经阅读了文档中给出的所有步骤并遵循它们
http://code.google.com/apis/accounts/docs/OAuth2.html#IA根据文档,我需要使用web控件登录。
是否有任何方法可以让我只期望用户名密码和后台获得认证令牌?
您可以使用ClientLogin在后台做事情,但它正在被取代(缓慢),并不能与所有谷歌帐户(两步)一起工作,所以我建议您坚持使用oAuth2,它绝对有效。
我怎么做的是打开WebBrowser
控件,确保IsScriptEnabled="true"
然后指向
https://accounts.google.com/o/oauth2/auth?client_id=xxx&redirect_uri=https://www.mydomain.com/oauth2callback&scope=xxx&response_type=code
真正重要的部分是重定向url。然后为WebBrowser
控件连接一个Navigating
方法,以拦截到该url的重定向。
<phone:WebBrowser Name="webbrowser" Navigating="webbrowser_Navigating" IsScriptEnabled="true" />
private void webbrowser_Navigating(object sender, NavigatingEventArgs e) {
if (e.Uri.Host.Equals("www.mydomain.com")) {
e.Cancel = true;
HandleOAuthResponse(e.Uri.Query);
}
}
这将给你返回的查询字符串谷歌重定向与code=xxx
,然后你遵循其余的文档和交换令牌,将持续30分钟和刷新令牌,以保持身份验证活动。
看看这篇文章,它是关于twitter客户端的,但twitter也使用OAuth。
编辑
我读了更多关于这一点,这似乎是一个问题,因为它是强制性的使用网页,必须用户复制访问代码到应用程序。它似乎很难/不可能刮掉网络浏览器,我找不到任何参考到一个真正的解决方案。
我认为你可以使用webBrowser. savetostring()方法来废弃webBrowser。
您实际上可以通过获取e.Uri.ToString()
来抓取浏览器URI,并使用replace方法删除不需要的项目,例如thestring.Replace("http://fakeuri.com/code=","");
唯一的问题是我有访问令牌。