2011-08-01 10 views
6

Próbuję małej aplikacji dla Windows Phone 7, która korzysta z usług zadań Google, problem polega na tym, że nie jestem w stanie przejść do logowania.Używanie Google oAuth na WP7

Przeczytałem wszystkie kroki podane w dokumentacji i postępując zgodnie z nimi
http://code.google.com/apis/accounts/docs/OAuth2.html#IA zgodnie z dokumentem potrzebuję użyć kontroli internetowej do logowania.

Czy istnieje sposób, w jaki mogę po prostu oczekiwać hasła użytkownika i uzyskać token uwierzytelniający w tle?

Odpowiedz

15

Możesz używać ClientLogin do robienia rzeczy w tle, ale jest on zastępowany (powoli) i nie działa ze wszystkimi kontami Google (dwuetapowymi), więc proponuję trzymać się OAuth2, to na pewno działa.

Jak to zrobić, to otworzyć kontrola WebBrowser, upewniając IsScriptEnabled="true" następnie skierować go na

https://accounts.google.com/o/oauth2/auth?client_id=xxx&redirect_uri=https://www.mydomain.com/oauth2callback&scope=xxx&response_type=code 

Naprawdę ważnym elementem jest przekierowanie. Następnie należy podłączyć metodę Navigating dla kontrolki WebBrowser, aby przechwycić przekierowanie do tego adresu 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); 
    } 
} 

To daje powrotem ciągu kwerendy Google przekierowuje z którym ma code=xxx które następnie wykonaj pozostałe docs i wymienić go na znak, który będzie trwał 30 min i token odświeżania zachować uwierzytelnianie aktywne.

+0

To bardzo pomogło ... dzięki za tonę – Apoorva

2

Masz numer look at this post, który dotyczy klienta twitter, ale twitter używa także OAuth.

EDIT

czytam więcej na ten temat i wydaje się być problemem, ponieważ jest to obowiązkowe, aby skorzystać z strony internetowej i muszę użytkownik skopiuj kod dostępu do aplikacji. It appears to be hard/impossible to scrape the Webbrowser Nie znalazłem w tej chwili żadnych odniesień do prawdziwego rozwiązania.

0

Myślę, że możesz zgrać WebBrowser przy użyciu metody webBrowser.SaveToString().

-2

W rzeczywistości można zeskrobać identyfikator URI przeglądarki, pobierając e.Uri.ToString() i użyć metody zamiany w celu usunięcia elementów, które nie są potrzebne, np. thestring.Replace("http://fakeuri.com/code=","");

Mam tylko problem z tokenem dostępu.