我尝试使用Google任务服务的Windows Phone 7的小应用程序,问题是我无法通过登录。
我已阅读文档中给出的所有步骤并遵循它们 http://code.google.com/apis/accounts/docs/OAuth2.html#IA根据我需要使用Web控件登录的文档。
有什么方法可以让我想要用户名密码并在后台获取身份验证令牌吗?
答案 0 :(得分:15)
您可以使用ClientLogin在后台执行操作,但它正在被替换(缓慢)并且不适用于所有Google帐户(两步),因此我建议您坚持使用oAuth2,它绝对有效。< / p>
我是如何操作的,打开一个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
真正重要的部分是重定向网址。然后,您为Navigating
控件添加WebBrowser
方法,以拦截重定向到该网址。
<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分钟的令牌和刷新令牌以保持身份验证处于活动状态。
答案 1 :(得分:2)
有一个look at this post它是关于一个Twitter客户端,但Twitter也使用OAuth。
修改强>
我在此阅读了更多内容,这似乎是一个问题,因为必须使用该网页,并且必须将用户身份的访问代码复制到应用程序。 It appears to be hard/impossible to scrape the Webbrowser目前我找不到任何真正的解决方案。
答案 2 :(得分:0)
我认为您可以使用webBrowser.SaveToString()方法废弃webBrowser。
答案 3 :(得分:-2)
您实际上可以通过e.Uri.ToString()
抓取浏览器URI并使用replace方法删除不需要的项目,例如thestring.Replace("http://fakeuri.com/code=","");
我唯一的问题是访问令牌。