#asp.net #dotnetopenauth #google-apps
#asp.net #dotnetopenauth #google-приложения
Вопрос:
Я следую примеру, предоставленному Google для приложения Market place на
http://code.google.com/googleapps/marketplace/tutorial_dotnet.html
Я добился того, что аутентификация Google работает, как в примере, моя следующая задача — добавить запись в календарь Google. Я нашел следующий код для этого, и он также работает нормально
CalendarService service = new CalendarService(APPLICATION_NAME);
service.setUserCredentials(vUserName, vPassword);
Google.GData.Calendar.EventEntry entry = new Google.GData.Calendar.EventEntry();
// Set the title and content of the entry.
entry.Title.Text = title;
entry.Content.Content = contents;
// Set a location for the event.
Where eventLocation = new Where();
eventLocation.ValueString = location;
entry.Locations.Add(eventLocation);
When eventTime = new When(startTime, endTime);
entry.Times.Add(eventTime);
Uri postUri = new Uri("http://www.google.com/calendar/feeds/default/private/full");
// Send the request and receive the response:
AtomEntry insertedEntry = service.Insert(postUri, entry);
Проблема, с которой я сталкиваюсь, заключается в следующей строке, если я дам свое имя пользователя и пароль, это сработает
service.setUserCredentials(vUserName, vPassword);
я аутентифицировал пользователя, как в примере Google. Итак, я не знаю имя пользователя и пароль других пользователей, которые заходят на мой сайт, используя их gmail.
Как мне добавить запись календаря с имеющейся у меня информацией?
Я видел несколько примеров с аутентификацией пользователя с помощью RequestFactory. но не смог найти полный пример, который я могу использовать
Комментарии:
1. Есть ли способ получить authToken?
Ответ №1:
- вам нужно будет создать файл сертификата .pfx, загрузить его в Google и разместить на своем сервере.
-
создайте свой URL-адрес AuthSubRequest
<asp:HyperLink ID="GotoAuthSubLink" runat="server"/> GotoAuthSubLink.Text = "Login to your Google Account"; GotoAuthSubLink.NavigateUrl = AuthSubUtil.getRequestUrl("(return url)http://www.example.com/RetrieveToken", "https://www.google.com/calendar/feeds/", false, true);
-
после того, как пользователь нажимает на вашу ссылку авторизации, он возвращается на ваш обратный URL. получите токен сеанса следующим образом
String sessionToken = ""; //Save this for making your calls. String certFile = "D:\websites\yourwebsite.com\google.pfx"; String result = GetAuthSubSessionToken(Request["token"]); protected AsymmetricAlgorithm GetRsaKey() { X509Certificate2 cert = new X509Certificate2(certFile, ""); RSACryptoServiceProvider privateKey = cert.PrivateKey as RSACryptoServiceProvider; return privateKey; } public string GetAuthSubSessionToken(string singleUseToken) { string gatStr = ""; try { AsymmetricAlgorithm rsaKey = GetRsaKey(); try { sessionToken = AuthSubUtil.exchangeForSessionToken(singleUseToken, rsaKey).ToString(); gatStr = "Session Token = " SessionToken; } catch (Exception e) { gatStr = "Error: I appears that the Google authentication server is experiencing an error. Try the authorizaton link again in a few minutes. <a href="" rtnUrl "" title="" e.Message "">continue</a>"; } } catch (Exception E) { gatStr = "Error: rsa " E.Message E.StackTrace; } return gatStr; }
-
сохраните токен сеанса и используйте CreateCalendarService в последующих вызовах для создания вашей службы календаря.
public CalendarService CreateCalendarService() { GAuthSubRequestFactory authFactory = new GAuthSubRequestFactory("cl", "YourName-calendarApp-1"); authFactory.Token = sessionToken; authFactory.PrivateKey = GetRsaKey(); CalendarService cs = new CalendarService(authFactory.ApplicationName); cs.RequestFactory = authFactory; return cs; }