"> آموزش استفاده از Google Calendar در ASP.NET

آموزش استفاده از Google Calendar در ASP.NET

Google Calendar

Google Calendar یا تقویم گوگل یک سرویس رایگان گوگل برای استفاده از تقویم در وبسایت می باشد . با استفاده از این تقویم میتوانید قرار ها و هشدارهای خود را در زمان های مختلف ثبت کنید یا … با استفاده از این سرویس میتوانید به راحتی از یک تقویم در سایت خود استفاده کنید . تعریفی بود از Google Calander که پیشنهاد میکنم در ادامه همراه من باشید.

 

برای استفاده از این تقویم میتوانید به راحتی با استفاده از یکی از زبان های برنامه نویسی زیر از API های این تقویم استفاده کنید :

  1. .NET
  2. Java
  3. JavaScript
  4. PHP
  5. Python

ما در این پروژه قصد استفاده از نسخه .NET این اپلیکیشن را داریم به این منظور به صفحه مربوط به .NET  آن مراجعه میکنیم.

چند نکته مهم :

۱ – برای استفاده از این اپلیکیشن از یک آرایه شامل  : نام تقویم – اکانت گوگل – و پسورد اکانت    استفاده میشود.

۲ – رویداد ها در سایت نمایش داده میشوند.

راه حل این موارد بالا :

*حل مشکل اول برای استفاده از نام نقشه , یوزنیم و پسورد ایمیل :

  1. دانلود کتابخانه ,net از  google Data API

از این مسیر این کتاب خانه را دانلود کنید و نصب کنید که پس از نصب معمولا در این آدرس نصب میشود :

C:\Program Files\Google\Google Data API SDK\Redist\.

۲. کپی فایل های لازم به وب سایت

فایل های زیر را که در مسیر :

C:\Program Files\Google\Google Data API SDK\Redist\

قرار دارند را به پوشه Bin وبسایت اضافه کنید :

Google.GData.AccessControl.dll, Google.GData.Calendar.dll, Google.GData.Client.dll, Google.GData.Extensions.dll

 

سپس از قسمت Refrence ها این فایل هارا اضافه کنید برای اینکار کافیست که روی پروژه خود کلیک راست کنید و گزینه Add Refrence را بزنید و فایل های گفته شده را انتخاب کنید و به عنوان مرجع به سایت اضافه کنید .

۳. ساخت یک Class‌ برای استفاده و ارتباط بین سایت و کتابخانه تقویم

در این مرحله یک کلاس میسازیم که یک آرایه از رویداد هارا برگشت میدهد نوع آرایه یک شی از CalendarEventObject باید باشد که بتواند از نام تقویم , یوزنیم و پسورد استفاده کند

در اینجا ما نام Class ساخته شده را CalendarEventObject قرار داد ایم که به صورت زیر میباشد :

public class CalendarEventObject
{
    public DateTime Date { get; set; }
    public string Title { get; set; }
}

سپس مشکل به صورت زیر حل میشود :


public class GoogleCalendar
    {
        private const string CALENDARS_URL = 
	"https://www.Google.com/calendar/feeds/default/owncalendars/full";
        private const string CALENDAR_TEMPLATE = 
	"https://www.Google.com/calendar/feeds/{0}/private/full";
        private string m_CalendarUrl = null;
        private string m_CalendarId = null;
        private readonly CalendarService m_Service = null;
        private readonly string m_CalendarName;
        private readonly string m_UserName;
        private readonly string m_Password;
    public GoogleCalendar(string calendarName, string username, string password)
        {
            m_CalendarName = calendarName;
            m_UserName = username;
            m_Password = password;
            m_Service = new CalendarService("Calendar");
        }
        public CalendarEventObject[] GetEvents()
        {
            try
            {
                if (Authenticate())
                {
                    EventQuery query = new EventQuery(m_CalendarUrl);
                    EventFeed feed = m_Service.Query(query);
                    return (from EventEntry entry in feed.Entries
                            select new CalendarEventObject()
                            {Date = entry.Times[0].StartTime, 
				Title = entry.Title.Text}).ToArray();
                }
                else
                {
                    return new CalendarEventObject[0];
                }
            }
            catch (Exception)
            {
                return new CalendarEventObject[0];
            }
        }

      private bool Authenticate()
        {
            m_Service.setUserCredentials(m_UserName, m_Password);
            return SaveCalendarIdAndUrl();
        }

        private bool SaveCalendarIdAndUrl()
        {
            CalendarQuery query = new CalendarQuery();
            query.Uri = new Uri(CALENDARS_URL);
            CalendarFeed resultFeed = (CalendarFeed)m_Service.Query(query);

            foreach (CalendarEntry entry in resultFeed.Entries)
            {
                if (entry.Title.Text == m_CalendarName)
                {
                    m_CalendarId = entry.Id.AbsoluteUri.Substring(63);
                    m_CalendarUrl = string.Format(CALENDAR_TEMPLATE, m_CalendarId);
                    return true;
                }
            }
            return false;
        }

   public string GetCalendarId()
    {
          return m_CalendarId;
    }
}


 

توضیح متغییر ها و کد های بالا :

  • CALENDARS_URL : آدرسی که میتوانید از طریق آن لیست تمامی تقویم هارا بیاورید
  • CALENDAR_TEMPLATE : آدرس یک تقویم خاص بدون شناسه یا id
  • m_CalendarUrl : آدرس اختصاصی تقویم
  • m_CalendarId : شناسه اختصاصی تقویم
  • m_Service : نشان دهنده اتصال مشتری به سرویس تقویم
  • m_CalendarName :اسم تقویم
  • m_UserName:یوزر نیم یا شناسه کاربری اکانت
  • m_Password : رمز عبور اکانت

توضیح توابع و متد ها :

Constructor یا سازنده :

این قسمت یک تقویم میسازد که نام تقویم را از نوع رشته ( String ) میباشد را دریافت میکند .


m_Service=new CalendarService("Calendar"); 

احزار هویت :

برای استفاده از سرویس باید عملیات احراز هویت انجام شود که نام کاربری و رمز عبور را میگیرد برای این کار به این صورت باید عمل کنید باید از متد setUserCredentials در CalendarService استفاده کنید و نام کاربری و رمز عبور رابه آن بدهید :

m_Service.setUserCredentials(m_UserName, m_Password);

همچنین میتوانید با فراخوانی روش کمکی استفاده از متد Authenticate() و SaveCalendarIdAndUrl() برای شناسه تقویم و آدرس تقویم استفاده کنید .

SaveCalendarIdAndUrl():

با استفاده از این متد تقویم مورد نظر را پیدا کرده و شناسه و آدرس آن را در یک متغییر اخلی ذخیره میکنیم

برای نمایش تمام تقویم ها باید یک کوئری از CalendarQuery بسازیم و درخواست تمام تقویم هارا بدهیم


CalendarQuery query = new CalendarQuery();
query.Uri = new Uri(CALENDARS_URL);
CalendarFeed resultFeed = (CalendarFeed)m_Service.Query(query); 

حال یا یک حلقه در تمام تقویم ها میگردیم اگر تقویم مورد نظر خودرا پیدا کردیم شناسه و آدرس آن را ذخیره میکنیم برای این کار از یک حلقه استفاده میکنیم:

foreach (CalendarEntry entry in resultFeed.Entries)
           {
               if (entry.Title.Text == m_CalendarName)
               {
                   m_CalendarId = entry.Id.AbsoluteUri.Substring(63);
                   m_CalendarUrl = string.Format(CALENDAR_TEMPLATE, m_CalendarId);
                   return true;
               }
           }

در اینجا از یک ترفند استفاده کرده ایم :


m_CalendarId = entry.Id.AbsoluteUri.Substring(63);

معمولا نام تقویم با عنوان  آن برابر است که ما از این کار استفاده کرده ایم و به خوبی کار میکند هرچند در همه موارد کارساز نیست.

GetEvents() :

این متد یک آرایه از CalendarEventObject را برگشت میدهد ( که در  Google Calendar میباشد )

برای دریافت رویداد هایی که در یک تقویم موجود است یک شی یا آبجکت از کلاس EventQuery میسازیم حال برای رویداد های تقوی از متد های کوئری CalendarService استفاده میکنیم . اکنون یک آرایه از CalendarEventObject  از EventEntry برگشت داده میشود :


EventQuery query = new EventQuery(m_CalendarUrl);
EventFeed feed = m_Service.Query(query);
return (from EventEntry entry in feed.Entries
       select new CalendarEventObject()
          {Date = entry.Times[0].StartTime, 
           Title = entry.Title.Text}).ToArray(); 

GetCalendarId():

شناسه تقویمی را که قبلا در m_CalendarId ذخیره شد برگشت میدهد .

Google Calendar

* نمایش رویداد ها در سایت :

برای اینکار دو روش وجود دارد :

۱ . اینکه یک آرایه از رویداد های دریافتی را نشان دهیم  به این صورت :


GoogleCallendar calendar = new GoogleCalendar
	("Google calendar name", "Google account name", "Google account password");
CalendarEventObject[] events= calendar.GetEvents()

GoogleCalendar

۲. استفاده از ifream برای نمایش رویداد ها در سایت به این صورت :


<iframe src="https://www.Google.com/calendar/embed?src=<%= GetCalendarID()%>&ctz=Europe%2FMoscow" style="border: 0" width="800"
height="600" frameborder="0" scrolling="no"></iframe>

پس از آن GetCalendarID() قابل شناسایی است که id یا شناسه تقویم را برگشت میدهد که به این صورت مورد استفاده قرار میگیرد :


public string GetCalendarId()
{
     GoogleCalendar calendar = new GoogleCalendar
	("Google calendar name", "Google account name", "Google account password");
     return calendar.GetCalendarId();
}

نتیجه به این صورت است :

GoogleCalendar

  • پسورد: www.mspsoft.com
کیوان غلامی

نوشته‌های مرتبط

دیدگاه‌ها

*
*

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.

کدیشن ! مارکت پروژه های برنامه نویسی راه اندازی شدیه توکه پا بریم ببینم