سوالات متداول

    بررسی اجمالی

  1. Google Data API چیست؟
  2. من یک درخواست ویژگی یا یک گزارش اشکال دارم. کجا پست کنم؟
  3. کجا باید در مورد یک API خاص سوال بپرسم؟
  4. JSON چیست؟
  5. آیا باید از XML استفاده کنم؟ آیا فرمت های داده دیگری موجود است؟
  6. چرا از REST استفاده می کنید؟
  7. آیا راهنمایی یا کد نمونه کوتاهی برای مشکلات رایج دارید؟
  8. آیا جیمیل API داده دارد؟
  9. احراز هویت

  10. نام سرویس در ClientLogin برای هر Data API چیست؟
  11. هنگامی که کاربر از یک برنامه خارج می شود، آیا لازم است به سرورهای API اطلاع داده شود؟
  12. آیا رمز احراز هویت ClientLogin تاریخ انقضا دارد؟
  13. من یک سوال کلی در مورد حساب های گوگل دارم. کجا باید بروم؟
  14. چگونه می توانم به یک API احراز هویت کنم؟
  15. از چه مقداری برای پارامتر دامنه AuthSub/OAuth 1 استفاده کنم؟
  16. آیا انواع مختلفی از توکن های AuthSub وجود دارد؟ آیا توکن ها منقضی می شوند؟
  17. تفاوت اصلی بین ClientLogin و AuthSub/OAuth 1 چیست؟
  18. آیا می توانم از احراز هویت ClientLogin در برنامه های وب شخص ثالث استفاده کنم؟
  19. CAPTCHA چیست؟
  20. چگونه یک چالش CAPTCHA ایجاد کنم؟
  21. آیا باید از ClientLogin در برنامه وب خود استفاده کنم؟
  22. چگونه می توانم هنگام استفاده از AuthSub/OAuth 1 نام کاربری کاربر را بفهمم؟
  23. چگونه از OAuth 1 با کتابخانه های سرویس گیرنده Google Data API استفاده کنم؟
  24. چگونه از AuthSub با کتابخانه های سرویس گیرنده Google Data API استفاده کنم؟
  25. چگونه از ClientLogin با کتابخانه های سرویس گیرنده Google Data API استفاده کنم؟
  26. کتابخانه های مشتری

  27. کتابخانه های سرویس گیرنده از چه زبان های برنامه نویسی توسط گوگل پشتیبانی می شوند؟
  28. چگونه می توانم یک اشکال یا درخواست ویژگی را برای یکی از کتابخانه های سرویس گیرنده Google Data گزارش کنم؟
  29. چگونه می توانم گزینه های اشکال زدایی را در کتابخانه های مشتری فعال کنم؟
  30. از کجا می توانم اسناد مرجع برای کلاس های کتابخانه مشتری پیدا کنم؟
  31. عیب یابی

  32. چند ابزار خوب برای اشکال زدایی HTTP چیست؟
  33. چگونه می توانم اطلاعات ثبت HTTP را در کتابخانه مشتری جاوا دریافت کنم؟
  34. چگونه می توانم اطلاعات ثبت HTTP را در کتابخانه سرویس گیرنده دات نت دریافت کنم؟
  35. چگونه می توانم رمزگذاری gzip را از فیدهای Google Data فعال کنم؟
  36. چرا هنگام استفاده از کلاینت PHP، خطای «نتوانم به sslv2 متصل شوم» را می بینم؟
  37. چگونه می توانم سند سرویس Atom را که یک فید را توصیف می کند، دریافت کنم؟

بررسی اجمالی

Google Data API چیست؟

Google Data API یک API مبتنی بر پروتکل Google Data است. پروتکل Google Data بر اساس فرمت‌های Atom 1.0 و RSS 2.0 به اضافه پروتکل انتشار اتم (APP) است.

پروتکل Google Data آن استانداردها را به طرق مختلف، با استفاده از مکانیزم های الحاقی تعبیه شده در استانداردها گسترش می دهد. فیدها مطابق با فرمت های Atom یا RSS هستند. مدل انتشار مطابق با پروتکل انتشار اتم است.

این پروتکل همچنین یک مدل کلی برای فیدها، پرس و جوها و نتایج ارائه می دهد. می‌توانید از آن برای ارسال پرسش‌ها و به‌روزرسانی‌ها به هر API داده استفاده کنید.

من یک درخواست ویژگی یا یک گزارش اشکال دارم. کجا پست کنم؟
ردیاب مشکل ما را بررسی کنید. به دنبال درخواست ویژگی خود بگردید و آن را ستاره دار کنید تا پشتیبانی خود را اضافه کنید و به‌روزرسانی‌های وضعیت آن را دریافت کنید.
کجا باید در مورد یک API خاص سوال بپرسم؟
اگر مشکل شما در اینجا فهرست نشده است یا می‌خواهید توضیح بیشتری ارائه شود، گروه‌های گفتگوی خاص برای هر Google Data API وجود دارد:
JSON چیست؟

JSON به نشانه گذاری شی جاوا اسکریپت اشاره دارد.

JSON یک فرمت تبادل داده سبک وزن است که سادگی آن باعث استفاده گسترده در بین توسعه دهندگان وب شده است. خواندن و نوشتن آسان است. شما می توانید آن را با استفاده از هر زبان برنامه نویسی تجزیه کنید و ساختارهای آن مستقیماً به ساختارهای داده مورد استفاده در اکثر زبان های برنامه نویسی نگاشت می شوند.

درباره استفاده از JSON با Google Data API بیشتر بخوانید.

آیا باید از XML استفاده کنم؟ آیا فرمت های داده دیگری موجود است؟
فرمت پیش‌فرض داده برای APIهای Google Data XML است، به شکل فید Atom. با این حال، هنگام درخواست فید، می توانید یک قالب جایگزین را با استفاده از پارامتر پرس و جوی alt تعیین کنید.
  • alt=rss
    داده های پاسخ به عنوان فید RSS فرمت می شوند.
  • alt=json یا alt=json-in-script
    یک نمایش JSON از ساختار XML خوراک Atom را برمی‌گرداند. مزیت اضافی JSON این است که "تجزیه" آن در کد مشتری جاوا اسکریپت آسان تر است. در حال حاضر، استفاده از JSON فقط به عنوان گزینه فقط خواندنی در دسترس است. با این حال، استفاده از کتابخانه سرویس گیرنده جاوا اسکریپت با خدمات بلاگر ، مخاطبین یا تقویم امکان خواندن و نوشتن داده ها را فراهم می کند.

    درباره درخواست و استفاده از فیدهای JSON بیشتر بخوانید.

  • alt=atom-in-script
    مشابه alt=json-in-script ، اما نتایج به‌عنوان یک رشته Atom XML به جای JSON برگردانده می‌شوند.
  • alt=rss-in-script
    مشابه alt=atom-in-script ، اما نتایج به‌جای Atom به‌عنوان یک رشته XML RSS برگردانده می‌شوند.

درباره قالب‌های جایگزین در راهنمای مرجع داده‌های Google بیشتر بخوانید.

چرا از REST استفاده می کنید؟
REST ساده، سبک، مقیاس پذیر است و به خوبی برای نمایش و افشای داده ها نقشه برداری می کند.
آیا راهنمایی یا کد نمونه کوتاهی برای مشکلات رایج دارید؟
برای کمک در مورد کتابخانه های مشتری ما و ایجاد درخواست های خام، باید وبلاگ نکات API Google Data را مرور کنید.
آیا جیمیل API داده دارد؟

نه، اما می‌توانید از فید Atom Gmail با AuthSub یا OAuth 1 برای درخواست دسترسی فقط خواندنی به پیام‌های خوانده نشده کاربر استفاده کنید. محدوده باید روی https://mail.google.com/mail/feed/atom/ تنظیم شود. یک پرس و جو به عنوان مثال خواهد بود:

GET https://mail.google.com/mail/feed/atom/

اگر علاقه مند به مدیریت ایمیل خود هستید، Gmail از پشتیبانی IMAP/POP نیز برخوردار است.


احراز هویت

در اسناد Google Data APIs، "OAuth" به OAuth 1 اشاره دارد. برای جزئیات OAuth 2.0، به مستندات مربوط به API فردی خود مراجعه کنید.

نام سرویس در ClientLogin برای هر Data API چیست؟
"نام سرویس" یک رشته مختصر است که سیستم احراز هویت ClientLogin برای شناسایی یک سرویس Google استفاده می کند.
Google API نام سرویس
API داده های گوگل آنالیتیکس analytics
APIهای G Suite
(اطلاعات و مدیریت دامنه)
apps
Google Sites Data API jotspot
Blogger Data API blogger
API داده جستجوی کتاب print
Calendar Data API cl
Google Code Search Data API codesearch
Contacts Data API cp
Content API برای خرید structuredcontent
API داده فهرست اسناد writely
Finance Data API finance
فید Gmail Atom mail
Health Data API health
weaver (H9 sandbox)
Maps Data API local
Picasa Web Albums Data API lh2
Sidewiki Data API annotateweb
Spreadsheets Data API wise
Webmaster Tools API sitemaps
YouTube Data API youtube

برای اطلاعات بیشتر در مورد سایر پارامترهای مورد استفاده در درخواست ClientLogin، به مستندات ClientLogin مراجعه کنید.

هنگامی که کاربر از یک برنامه خارج می شود، آیا لازم است به سرورهای API اطلاع داده شود؟
خیر، هنگام خروج کاربر از برنامه، لازم نیست Google Data API را اطلاع دهید. با این حال، اگر برنامه شما دیگر نیازی به استفاده از نشانه AuthSub صادر شده ندارد، باید این توکن را باطل کند .
آیا رمز احراز هویت ClientLogin تاریخ انقضا دارد؟
یک نشانه ClientLogin می تواند به مدت 2 هفته از تاریخ صدور دوام داشته باشد، اما این محدودیت مختص سرویس است و می تواند کوتاهتر باشد.
من یک سوال کلی در مورد حساب های گوگل دارم. کجا باید بروم؟
از مرکز راهنمای حساب‌های Google دیدن کنید.
چگونه می توانم به یک API احراز هویت کنم؟
درخواست HTTP شما باید شامل یک سرصفحه مجوز باشد که حاوی رمزی باشد که با استفاده از ClientLogin ، AuthSub یا OAuth 1 به دست آمده است.
از چه مقداری برای پارامتر دامنه AuthSub/Oauth 1 استفاده کنم؟
یک پارامتر scope توسط AuthSub و OAuth 1 مورد نیاز است تا مشخص شود برنامه شما به کدام سرویس(های) Google دسترسی خواهد داشت. برای جزئیات OAuth 2.0، به اسناد مربوط به API خاص خود مراجعه کنید.

Google API نام سرویس ClientLogin
Google Analytics Data API https://www.google.com/analytics/feeds/
Google Sites Data API http(s)://sites.google.com/feeds/
Blogger Data API http://www.blogger.com/feeds/
API داده جستجوی کتاب http://www.google.com/books/feeds/
Calendar Data API http(s)://www.google.com/calendar/feeds/
Contacts Data API http(s)://www.google.com/m8/feeds/
Content API برای خرید https://www.googleapis.com/auth/structuredcontent
API داده فهرست اسناد http(s)://docs.google.com/feeds/
Finance Data API http://finance.google.com/finance/feeds/
فید Gmail Atom https://mail.google.com/mail/feed/atom/
Health Data API https://www.google.com/health/feeds/
https://www.google.com/h9/feeds/ (H9 sandbox)
Maps Data API http://maps.google.com/maps/feeds/
Picasa Web Albums Data API http://picasaweb.google.com/data/
API مخاطبین قابل حمل http://www-opensocial.googleusercontent.com/api/people
Sidewiki Data API http://www.google.com/sidewiki/feeds/
Spreadsheets Data API http(s)://spreadsheets.google.com/feeds/
Webmaster Tools API http://www.google.com/webmasters/tools/feeds/
YouTube Data API http://gdata.youtube.com
آیا انواع مختلفی از توکن های AuthSub وجود دارد؟ آیا توکن ها منقضی می شوند؟
دو نوع توکن AuthSub وجود دارد. اولی یک توکن یکبار مصرف است که از طریق پارامتر کوئری 'token' به برنامه وب شما ارائه می شود. این توکن اولین باری که با سرویسی که برای آن صادر شده است استفاده می شود یا زمانی که با توکن جلسه مبادله می شود منقضی می شود.

نشانه‌های جلسه منقضی نمی‌شوند مگر اینکه رمز به صراحت از طریق کاربر یا فراخوانی AuthSubRevokeToken API لغو شود. یک توکن یکبار مصرف تنها در صورتی می تواند با یک نشانه جلسه مبادله شود که URL اصلی AuthSubRequest ، session=1 به عنوان پارامتر پرس و جو مشخص کرده باشد.
تفاوت اصلی بین ClientLogin و AuthSub/OAuth 1 چیست؟

AuthSub برای برنامه های کاربردی وب طراحی شده است. این تضمین می‌کند که اعتبار کاربر به‌جای یک وب‌سایت شخص ثالث، مستقیماً از مرورگر وب کاربر به سرورهای Google ارسال می‌شود.

ClientLogin برای برنامه های دسکتاپ نصب شده است. به برنامه درخواست کننده نیاز دارد که اعتبار کاربری را از طرف کاربر به Google ارسال کند.

اسناد مربوط به API احراز هویت حساب Google را ببینید.

آیا می توانم از احراز هویت ClientLogin در برنامه های وب شخص ثالث استفاده کنم؟
استفاده از ClientLogin در برنامه های وب شخص ثالث قابل قبول است، اما به شدت از آن جلوگیری می شود. به عنوان بهترین روش، برنامه وب هرگز نباید از یک کاربر اعتبارنامه ورود به سیستم خود را بخواهد (این ممکن است مستعد جاسوسی باشد). در عوض، یک برنامه باید اطلاعات کاربری کاربر را در سمت سرور ذخیره کند و یک «حساب سرویس» داشته باشد که همیشه برای احراز هویت با Google استفاده می‌شود.
CAPTCHA چیست؟
CAPTCHA (آزمون تورینگ عمومی کاملاً خودکار برای تشخیص رایانه‌ها و انسان‌ها) نوعی آزمون پاسخ به چالش است که برای تعیین اینکه آیا کاربر انسان است یا نه. این اصطلاح توسط دانشگاه کارنگی ملون علامت تجاری است. جزئیات بیشتر را در ویکی پدیا ببینید. ما CAPTCHA را در ClientLogin پیاده سازی کرده ایم.
چگونه یک چالش CAPTCHA ایجاد کنم؟
یک الگوریتم اختصاصی برای تعیین اینکه چه زمانی به چالش CAPTCHA در حین احراز هویت نیاز است استفاده می شود. تلاش های مکرر برای احراز هویت با اعتبار نامناسب اغلب یک چالش CAPTCHA ایجاد می کند.
آیا باید از ClientLogin در برنامه وب خود استفاده کنم؟
خیر، ClientLogin باید توسط برنامه های نصب شده روی سخت افزار متعلق به کاربر استفاده شود. استفاده از ClientLogin API در برنامه های کاربردی وب ناامن است و به شدت ممنوع است.
چگونه می توانم هنگام استفاده از AuthSub/OAuth 1 نام کاربری کاربر را بفهمم؟
از آنجایی که فقط یک توکن از Google به شما داده می شود که به فیدهای کاربر اجازه دسترسی می دهد، ممکن است ندانید نام کاربری او چیست. اگر URL فید که می خواهید استفاده کنید حاوی نام کاربری به عنوان بخشی از آن باشد، می تواند مشکل ایجاد کند. در این مورد می‌توانید از نام کاربری ویژه default به معنای «کاربری که من از رمز احراز هویت او استفاده می‌کنم» استفاده کنید.
چگونه از OAuth 1 با کتابخانه های سرویس گیرنده Google Data API استفاده کنم؟
به مقاله استفاده از OAuth 1 با Google Data API Client Libraries مراجعه کنید.
چگونه از AuthSub با کتابخانه های سرویس گیرنده Google Data API استفاده کنم؟
به مقاله استفاده از AuthSub با کتابخانه های سرویس گیرنده Google Data API مراجعه کنید.
چگونه از ClientLogin با کتابخانه های سرویس گیرنده Google Data API استفاده کنم؟
به مقاله استفاده از ClientLogin با Google Data API Client Libraries مراجعه کنید.

کتابخانه های مشتری

کتابخانه های سرویس گیرنده از چه زبان های برنامه نویسی توسط گوگل پشتیبانی می شوند؟

کتابخانه های کلاینت جاوا ، دات نت ، پایتون و Objective-C به طور رسمی توسط گوگل پشتیبانی می شوند. علاوه بر این، شریک ما Zend یک کتابخانه مشتری PHP نوشته است. با استفاده از این کتابخانه ها، می توانید درخواست های پروتکل Google Data را بسازید، آنها را به یک سرویس ارسال کنید و پاسخ های سرور را پردازش کنید. همچنین یک کتابخانه سرویس گیرنده جاوا اسکریپت وجود دارد که در حال حاضر فقط از Blogger، Calendar و Google Contacts پشتیبانی می کند.

اگر کتابخانه کلاینت را به زبانی غیر از جاوا، Net، Python یا Objective-C می نویسید و می خواهید با انجمن توسعه دهندگان Data API به اشتراک بگذارید، در گروه بحث Google Data APIs پست کنید. دوست داریم بیشتر از شما بشنویم!

چگونه می توانم یک اشکال یا درخواست ویژگی را برای یکی از کتابخانه های سرویس گیرنده گزارش کنم؟

اشکالات یا درخواست های ویژگی برای کتابخانه های سرویس گیرنده را می توان در مکان های زیر گزارش کرد:

پس از ارسال اشکال خود، یک موضوع در انجمن توسعه دهندگان برای API مناسب ایجاد کنید.

چگونه می توانم گزینه های اشکال زدایی را در کتابخانه های سرویس گیرنده Google Data API فعال کنم؟
لطفاً برای اطلاعات در مورد فعال کردن اشکال‌زدایی با برخی از کتابخانه‌های سرویس گیرنده، مقاله زیر را ببینید: اشکال‌زدایی Google Data API Clients: کاوش ترافیک از درون برنامه شما
از کجا می توانم اسناد مرجع برای کلاس های کتابخانه مشتری پیدا کنم؟
کتابخانه مشتری راهنمای مرجع
جاوا جوادوک
جاوا اسکریپت JSdoc
.خالص NDoc
PHP phpDoc
پایتون PyDoc

عیب یابی

چند ابزار خوب برای اشکال زدایی HTTP چیست؟

تعدادی از ابزارها در زیر لیست شده است، اما ممکن است بخواهید مقاله On the Wire: Network Capture Tools for API Developers را نیز بخوانید که نمونه های عمیقی از WireShark و Fiddler را توضیح می دهد.

Wireshark
Wireshark یک "تحلیل کننده پروتکل شبکه" است. توانایی ضبط ترافیک شبکه و تجزیه و تحلیل محتوا را فراهم می کند. این در اشکال زدایی ترافیکی که در کتابخانه هایی رخ می دهد که دسترسی مستقیم به جریان های درخواست و پاسخ HTTP ندارید بسیار مفید است. ترافیک بین برنامه شما و سرویس های احراز هویت با استفاده از Wireshark قابل تجزیه و تحلیل نیست زیرا ارتباطات با استفاده از SSL رمزگذاری می شود. Wireshark همچنین می تواند برای تجزیه و تحلیل ترافیک ضبط شده با استفاده از ابزارهایی مانند tcpdump استفاده شود. Wireshark هم به عنوان کد منبع و هم به عنوان یک نصب کننده ویندوز از سوی توسعه دهندگان در دسترس است. بسته های شخص ثالث برای بسیاری از سیستم عامل ها در دسترس هستند.
کمانچه نواز
Fiddler یک "پراکسی اشکال زدایی HTTP" است. اگر بتوانید کد یا محیط زمان اجرا خود را برای استفاده از یک سرور پراکسی برای ترافیک HTTP پیکربندی کنید، Fiddler بین برنامه شما و سرویس های Google Data قرار می گیرد و به شما امکان می دهد ترافیک را بررسی کنید. Fiddler 2 شامل پشتیبانی از SSL است. Fiddler در حال حاضر فقط برای ویندوز در دسترس است.
حلقه
cURL یک ابزار خط فرمان است که می تواند درخواست های HTTP/HTTPS را انجام دهد. برای آزمایش سریع تعاملات با یک سرویس بدون نیاز به ایجاد پشتیبانی HTTP در مشتری بسیار مفید است.
چگونه می توانم اطلاعات ثبت HTTP را در کتابخانه مشتری جاوا دریافت کنم؟

کتابخانه های سرویس گیرنده جاوا از بسته java.util.logging برای فعال کردن ثبت درخواست های HTTP استفاده می کنند. این به شما این امکان را می دهد که ثبت هدر درخواست ها و پاسخ ها و همچنین کدهای وضعیت و URL های درخواست را فعال کنید. در حال حاضر جریانهای درخواست و پاسخ کامل را ثبت نمی کند. نام لاگر مورد استفاده برای این گزارش‌ها com.google.gdata.client.http.HttpGDataRequest است.

در صورتی که یک کد خطا از سرورها برگردانده شود، یک Exception پرتاب می شود. کلاس‌های استثنا از com.google.gdata.util.ServiceException به ارث می‌برند و شامل یک متد عمومی به نام getResponseBody() می‌شوند. برای اطلاعات بیشتر به Javadoc مراجعه کنید.

چگونه می توانم اطلاعات ثبت HTTP را در کتابخانه سرویس گیرنده دات نت دریافت کنم؟
اگر ردیابی فعال باشد، کتابخانه دات نت از روش های ردیابی System.Diagnostics برای ثبت مسیر اجرا استفاده می کند. همچنین در صورت بروز خطا، یک GDataRequestException پرتاب می شود. استثنا شامل ResponseString است که به شما امکان می دهد به بدنه پاسخ HTTP دسترسی داشته باشید.
چگونه می توانم رمزگذاری gzip را از فیدهای Google Data فعال کنم؟

برای دریافت پاسخ کدگذاری شده gzip از یکی از APIهای Google Data، باید دو کار را انجام دهید: یک هدر «Accept-Encoding» تنظیم کنید و عامل کاربری خود را طوری تغییر دهید که حاوی رشته «gzip» باشد. نمونه ای از هدرهایی که به درستی شکل گرفته اند:

User-Agent: my program (gzip)
Accept-Encoding: gzip
چرا هنگام استفاده از کلاینت PHP، خطای «نتوانم به sslv2 متصل شوم» را می بینم؟

از ژوئیه 2009، ما شروع به غیرفعال کردن SSLv2 در سرورهای خود به عنوان اقدامی پیشگیرانه برای بهبود امنیت کردیم. متأسفانه، یک اشکال در نسخه های اولیه کتابخانه مشتری PHP که قبل از ژوئیه 2007 منتشر شد (نسخه 1.0.0 و قبل از آن) وجود دارد که اتصالات را مجبور به استفاده از SSLv2 می کند. هنگام اتصال به سروری که SSLv2 غیرفعال است، خطای زیر ایجاد می شود:

PHP Fatal error:  Uncaught exception 'Zend_Http_Client_Adapter_Exception' with message 'Unable to Connect to sslv2://www.google.com:443.'

برای تصحیح این خطا، به نسخه جدیدتری از کتابخانه سرویس گیرنده PHP که از http://framework.zend.com/download در دسترس است، ارتقا دهید.

اگر نمی‌توانید به نسخه جدیدتر ارتقا دهید، می‌توانید با افزودن کد زیر به برنامه خود این مشکل را برطرف کنید، جایی که $gdata نمونه موجود شما از Zend_Gdata (یا زیر کلاس مناسب) است:

$gdata->getHttpClient()->setConfig(array('ssltransport' => 'ssl'));
چگونه می توانم سند سرویس Atom را که یک فید را توصیف می کند، دریافت کنم؟

می توانید سند سرویس Atom را با ارسال پارامتر alt=atom-service در درخواست دریافت کنید. توجه: فقط نسخه 2 APIهای Google Data یک سند سرویس را برمی گرداند که با نحو سند سرویس AtomPub مطابقت دارد. نسخه 1 APIهای Google Data همچنان یک سند سرویس را برمی گرداند، اما بر اساس مشخصات پیش نویس قبلی AtomPub است (تغییرات نحو و فضای نام بین دو نسخه وجود دارد).