2011-08-01 64 views

回答

15

您可以使用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方法,以攔截重定向到該網址。

<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分鐘,並刷新令牌來保持認證有效。

+0

這幫了很多......謝謝一噸 – Apoorva

0

我想你可以使用webBrowser.SaveToString()方法來取消webBrowser。

-2

實際上,您可以通過採用e.Uri.ToString()來刮取瀏覽器URI,並使用替換方法刪除不需要的項目,例如thestring.Replace("http://fakeuri.com/code=","");

我遇到的唯一問題就是訪問令牌。

相關問題