在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控件登录。

是否有任何方法可以让我只期望用户名密码和后台获得认证令牌?

在WP7上使用Google oAuth

您可以使用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=","");

唯一的问题是我有访问令牌。