يطبع هذا النموذج من تطبيق الويب قائمة المواقع التي يمكنك الوصول إليها وملفات خرائط الموقع، إن وجدت، لكل موقع من هذه المواقع.
المتطلبات
لتشغيل هذا البرنامج، ستحتاج إلى:
- الاتصال بالإنترنت ومتصفّح الويب من أجل تفويض نموذج التطبيق
- حساب على Google مرتبط بموقع إلكتروني واحد على الأقل تم إثبات ملكيته في Google Search Console
- لغة Python 3 وإطار عمل تطبيق الويب flask.
التعليمات
في هذا النموذج، ستُعدِّل OAuth 2.0 لتطبيق تطبيقات خادم الويب . يستخدم نموذج تطبيق بايثون هذا إطار عمل تطبيق الويب flask لتشغيل تطبيق مستنِد إلى الويب يدير مفاتيح OAuth ويطلب من Google Cloud API. عليك تكييف العيّنة المرتبطة للاتّصال بواجهة برمجة التطبيقات Search Console API وطباعة النتائج في صفحة ويب.
اتبع تعليمات الإعداد في صفحة نموذج OAuth المرتبطة أعلاه، وانسخ نموذج الرمز البرمجي، ثم عدِّل الرمز كما هو موضّح أدناه. على وجه التحديد، اتبع تعليمات الإعداد لبيئة الترميز الخاصة بك وإعداد (أو إعادة استخدام) مشروع التي يمكنها الوصول إلى Search Console API في Google Cloud Console وإنشاء بيانات الاعتماد لتطبيق ويب.
ستستخدم مثال "إكمال الرمز" ل Python، باعتبارها رمز المصدر لهذا النموذج.
يُرجى الاطّلاع على التعديلات أدناه لمعرفة التغييرات التي تحتاج إلى إجرائها على على التعليمات
إذا كنت بحاجة إلى الوصول إلى برنامج Python API من Google من خلال محرّك تطبيقات Google ستحتاج إلى استخدام حساب خدمة لإدارة أذوناتك.
التعديلات
عند اتّباع التعليمات الواردة في صفحة نموذج Oauth2 المرتبطة، عليك إجراء التغييرات التالية:
- تفعيل Google Search Console API بدلاً من Drive API
انسخ نموذج الطلب في نهاية مستند OAUth المرتبط أعلاه، واستبدِل هذا الرمز:
SCOPES = ['https://www.googleapis.com/auth/drive.metadata.readonly'] API_SERVICE_NAME = 'drive' API_VERSION = 'v2'
بالرمز التالي:SCOPES = ['https://www.googleapis.com/auth/webmasters.readonly'] API_SERVICE_NAME = 'searchconsole' API_VERSION = 'v1'
استبدِل نص دالة لغة Python
test_api_request()
بالرمز البرمجي التالي:@app.route('/test') def test_api_request(): if 'credentials' not in flask.session: return flask.redirect('authorize') # Load credentials from the session. credentials = google.oauth2.credentials.Credentials( **flask.session['credentials']) # Retrieve list of properties in account search_console_service = googleapiclient.discovery.build( API_SERVICE_NAME, API_VERSION, credentials=credentials) site_list = search_console_service.sites().list().execute() # Filter for verified URL-prefix websites. verified_sites_urls = [s['siteUrl'] for s in site_list['siteEntry'] if s['permissionLevel'] != 'siteUnverifiedUser' and s['siteUrl'].startswith('http')] # Print the sitemaps for all websites that you can access. results = '<!DOCTYPE html><html><body><table><tr><th>Verified site</th><th>Sitemaps</th></tr>' for site_url in verified_sites_urls: # Retrieve list of sitemaps submitted sitemaps = search_console_service.sitemaps().list(siteUrl=site_url).execute() results += '<tr><td>%s</td>' % (site_url) # Add a row with the site and the list of sitemaps if 'sitemap' in sitemaps: sitemap_list = "<br />".join([s['path'] for s in sitemaps['sitemap']]) else: sitemap_list = "<i>None</i>" results += '<td>%s</td></tr>' % (sitemap_list) results += '</table></body></html>' # Save credentials back to session in case access token was refreshed. # ACTION ITEM: In a production app, you likely want to save these # credentials in a persistent database instead. flask.session['credentials'] = credentials_to_dict(credentials) return results
أثناء إجراء الاختبارات، اضطررنا إلى تعيين OAUTHLIB_INSECURE_TRANSPORT يدويًا إلى 1 في بيئة باش:
export OAUTHLIB_INSECURE_TRANSPORT=1
. إذا ظهرت لك أخطاء بشأن HTTPS المطلوب لتشغيل نموذج التطبيق، حاوِل ضبط ذلك. المتغير.