我们的域名(教育)有谷歌应用程序。在我们的学生数据库系统中,我们拥有所有课程信息。
我们希望编写一个同步流程,强制所有教师和学生日历与Google日历同步。这一切看起来都很简单......减去所有“假设”,但这只需要时间来弄明白。
我在尝试决定如何通过Google进行身份验证时遇到了问题。由于单个用户每天可以进行的谈话数量有限制,因此无法让一个管理员用户帐户负责同步所有人。
有人可以告诉我应该采取哪种认证方向吗?我不需要用户登录,我只需要写入他们的所有日历。我听说过有两条腿的OAuth,但我对确切的答案感到困惑,并且真的需要一些关于使用什么的指导。
非常感谢。
答案 0 :(得分:0)
以下是我用于类似项目的一些代码片段。我使用谷歌api和.net框架,这比使用OAuth容易得多。这些片段在Visual Basic中
Imports Google.GData
Imports Google.GData.Client
Imports Google.GData.Calendar
.....Various Property Fields for the class go here.....
Public Sub AddEvent()
Try
Dim theEvent As New EventEntry
Dim theCalendarService As CalendarService = New CalendarService(FProgID)
Dim theTime As New Extensions.When(FEventStartTime, FEventEndTime)
Dim theEntry As AtomEntry
If FAllDay = True Then
theTime.AllDay = True
Else
theTime.AllDay = False
End If
theEvent.Title.Text = FEventTitle
theEvent.Times.Add(theTime)
If Not FDescription = "" Then
theEvent.Content.Content = FDescription
End If
If Not FEventLocation = "" Then
Dim theLocation As New Extensions.Where
theLocation.ValueString = FEventLocation
theEvent.Locations.Add(theLocation)
End If
If Not FAuthor = "" Then
Dim theAuthor As New AtomPerson
theAuthor.Name = FAuthor
theEvent.Authors.Add(theAuthor)
End If
theCalendarService.setUserCredentials(FstrEmail, FstrPassword)
theEntry = theCalendarService.Insert(FURLNoCookie, theEvent)
FStatus = "Event added successfully to Google Calendar"
Catch ex As Exception
FStatus = "Failed: Event was added to Job List, but not Google Calendar"
End Try
End Sub
总之,我只是使用谷歌为.net框架提供的Calendar Service类。 FstrEmail只是与日历关联的电子邮件地址,而FstrPassword是常规的谷歌密码。 FURLNoCookie实际上是您指定日历的地方。这只是日历的XML私人共享网址(来自日历设置>私人地址)。当您第一次从日历中获取此URL时,它将看起来像这样
http://www.google.com/calendar/feeds/somebody%40gmail.com/private-188ba1932aa23d4a64ag712db232bfe8b/basic
修改它看起来像这样
http://www.google.com/calendar/feeds/somebody%40gmail.com/private/full
类似的过程可用于更新和删除条目。我用它来同步一个包含多个谷歌日历的电子表格,它运行正常。