在WP7上使用Google oAuth

时间:2011-08-01 16:25:03

标签: c# windows-phone-7 oauth-2.0

我尝试使用Google任务服务的Windows Phone 7的小应用程序,问题是我无法通过登录。

我已阅读文档中给出的所有步骤并遵循它们 http://code.google.com/apis/accounts/docs/OAuth2.html#IA根据我需要使用Web控件登录的文档。

有什么方法可以让我想要用户名密码并在后台获取身份验证令牌吗?

4 个答案:

答案 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=","");

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