2010-10-23 9 views
2

Je crée également une application simple qui doit accéder à un calendrier de mon compte Google Apps. Mais j'ai des problèmes avec l'authentification. J'ai essayé le code suivant mais cela ne fonctionne pas:Accéder à GData Calender à partir du compte Google Apps?

Service service = new Service("<appname>"); 
service.setUserCredentials("<email>", "<password>"); 

CalendarEntry entry = (CalendarEntry)service.Get("<eventUrl>"); 

Comment cela fonctionne-t-il avec Google Apps? Existe-t-il un autre type d'authentification que je dois utiliser pour les applications Google?


Mise à jour:

Libérer le captcha a résolu mon problème à obtenir l'alimentation. Maintenant, j'ai frappé le mur suivant: mettre à jour un événement. Donne-moi l'exception GDataRequestException: "Impossible de mettre à jour une entrée en lecture seule".

Im en utilisant le calendrier privé adresse xml que je suis sous kalendarsettings: https://www.google.com/calendar/feeds/ _% 40group.calendar.google.com/privé/base

+0

Pour la mise à jour, essayez de changer le/aliment de base à/complète puis rejuger la mise à jour - comme ce code travaillé pour moi. – bkaid

Répondre

2

Je recommanderais d'utiliser Fiddler pour voir quelle réponse que vous obtenez http de retour de Google. Lorsque j'ai exécuté votre code sur mon compte google apps, je recevais une réponse "Error = CaptchaRequired". Cela nécessite que je vais à https://www.google.com/a/yourgoogleappdomain.com/UnlockCaptcha (en remplacement de votre domaine évidemment). Après je l'ai fait, j'étais capable de me connecter correctement. Il est possible que vous obteniez un autre code d'erreur, vérifiez-le et publiez-le ici. Vous pouvez avoir un mot de passe invalide ou une URL invalide ou cette fonctionnalité est désactivée par votre administrateur google apps. Voici mon exemple de code:

var calendarService = new CalendarService("company-app-version"); 
calendarService.setUserCredentials("<email>", "<password>"); 
var eventQuery = new EventQuery("http://www.google.com/calendar/feeds/user%40domain.com/private/full"); 
var eventFeed = calendarService.Query(eventQuery); 
foreach (var atomEntry in eventFeed.Entries) 
{ 
    Console.WriteLine(atomEntry.Title.Text); 
} 

Assurez-vous de remplacer l'e-mail, mot de passe, et le courrier électronique à l'intérieur de l'URL (URL encode le signe @ trop).

+1

ok merci cela fonctionne, mais savez-vous comment mettre à jour les entrées? Je ne peux pas le faire fonctionner. –

+0

Ya. Je ne peux pas le faire fonctionner aussi bien pour la mise à jour .. –

0
using Google.GData.Client; 
    public bool ValidateGoogleAccount(string login, string password) 
    { 
     try 
     { 
      Service bloggerService = new Service("blogger", "App-Name"); 
      bloggerService.Credentials = new GDataCredentials(login, password); 
      string token = bloggerService.QueryAuthenticationToken(); 

      if (token != null) 
       return true; 
      else 
       return false; 
     } 
     catch (Google.GData.Client.InvalidCredentialsException) 
     { 
      return false; 
     } 
    } 
Questions connexes