在WP7上使用Google oAuth

6
我正在尝试使用谷歌任务服务制作一个小型Windows Phone 7应用程序,但问题是我无法通过登录。
我已经阅读了文档中给出的所有步骤并遵循它们http://code.google.com/apis/accounts/docs/OAuth2.html#IA,根据文档,我需要使用Web控件进行登录。
是否有任何方法可以在后台仅期望用户名密码并获取身份验证令牌?
4个回答

15

您可以使用ClientLogin在后台执行操作,但它正在被替换(缓慢并且不能与所有Google帐户(双重步骤)一起使用),因此建议您坚持使用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分钟的令牌和一个刷新令牌,以保持身份验证活动。

2
请看这篇帖子,它是关于 Twitter 客户端的,但 Twitter 也使用 OAuth。
编辑:我阅读了更多关于此问题的信息,似乎这是一个问题,因为必须使用网页并将访问代码复制到应用程序中。目前我找不到任何真正解决的方法。

0

我认为你可以使用webBrowser.SaveToString()方法来抓取网页。


-2

您实际上可以通过获取 e.Uri.ToString() 并使用 replace 方法来删除不需要的项,例如 thestring.Replace("http://fakeuri.com/code=",""); 来抓取浏览器 URI。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接