مصادقة GDK Glassware

إذا احتاجت أداة GDK Glassware إلى مصادقة المستخدمين مقابل خدمة ويب، توفر أداة GDK واجهة برمجة تطبيقات تتيح للمستخدم إدخال بيانات اعتماده عند تثبيت Glassware.

باستخدام واجهة برمجة التطبيقات هذه، فإنك توفر مستخدمًا متسقًا تجربة مستخدمي Glass وتجنب النفقات العامة لتنفيذ مهامك المخططات المخصصة للمصادقة.

إنشاء حساب خدمة واجهة برمجة تطبيقات Google

عند إعداد المصادقة بشكل صحيح، تعمل الواجهة الخلفية لتطبيق الويب واجهة برمجة التطبيقات Mirror API لدفع حسابات المستخدمين معلومات الحساب إلى Glass بعد المصادقة على الخدمة التي تقدمها.

للوصول إلى واجهة برمجة التطبيقات هذه، يجب إنشاء مشروع في واجهة برمجة تطبيقات Google ثم إنشاء معرّف عميل لـ "حساب الخدمة" (وليس "تطبيق ويب"). من باستخدام حساب خدمة، لن يحتاج المستخدمون إلى منح إذن التطبيق لإرسال بيانات اعتماده إلى Glass ولن ستظهر مع كل من صفحة أذونات OAuth والمصادقة الخاصة بك الصفحة مرة أخرى.

لإنشاء هذا الحساب:

  1. انتقِل إلى Google Developers Console.
  2. انقر على الزر إنشاء مشروع وأدخِل المعلومات المطلوبة.
  3. بعد إنشاء مشروعك، دوِّن رقم المشروع، الذي ستحتاجها لاحقًا.
  4. ضمن واجهات برمجة التطبيقات المصادقة، انقر على واجهات برمجة التطبيقات وفعِّل Google Mirror API لمشروعك الجديد.
  5. ضمن واجهات برمجة التطبيقات auth، انقر على Credentials (بيانات الاعتماد)، ثم انقر على Create New Client (إنشاء عميل جديد) المعرّف ضَع علامة في المربّع المُسمّى حساب الخدمة لإنشاء بروتوكول OAuth 2.0 جديد. معرف العميل للمشروع.
  6. ستُعلمك نافذة منبثقة بأنّه يتم تنزيل المفتاح الخاص. إلى جهاز الكمبيوتر ويوفر لك كلمة المرور لهذا المفتاح الخاص. بعد إغلاق هذه النافذة، لن تتمكّن من تنزيل هذا الفيديو الخاص. أو الاطلاع على كلمة المرور مرة أخرى. وفي حالة فقدانها في أي وقت، يجب عليك إنشاء حساب واحد.
  7. دوِّن عنوان البريد الإلكتروني لحساب الخدمة، والذي ستحتاجه لاحقًا لإجراء استدعاء واجهة برمجة التطبيقات.

تقديم بيانات وصفية حول Glassware

عندما تكون مستعدًا لإرسال Glassware، ستحتاج إلى تقديم المعلومات التالية. هذا يسمح لنا بإعداد Glassware أن تتم مصادقتها بشكل صحيح عند تنفيذها.

  • عنوان URL للمصادقة الذي تتم إعادة توجيه المستخدمين إليه عند بتشغيل Glassware في MyGlass.
  • نوع الحساب (السلسلة التي ستستخدمها عند استدعاء الدالة واجهات برمجة تطبيقات Android AccountManager على جهاز Glass)
  • اسم الحزمة لتطبيقك من AndroidManifest.xml
  • الرقم التعريفي لمشروع Google API للمشروع الذي أنشأته أعلى من
  • APK المطلوب تحميله على MyGlass للاختبار، ما عليك سوى تقديم حزمة APK هذه مرة واحدة لمعالجة عملية التنزيل الأولية عندما يتم تشغيل Glassware تشغيل من MyGlass؛ بعد ذلك، يمكنك التكرار وتصحيح الأخطاء محليًا عن طريق استبدال حزمة APK على جهازك. يُرجى ملاحظة أنّ حزمة APK هذه يجب أن تفي المعايير التالية:
    • يجب محاذاة الرمز البريدي.
    • يجب عدم إجراء أي تغييرات على اسم الحزمة أو التوقيع الخاص. بعد ذلك (لا يسمح مدير حزمة Android بالترقيات) إذا تغير أي من هذين المقياسين).
    • يجب أن يكون حجمه أقل من 50 ميغابايت.
    • يجب تجميعه باستخدام أحدث إصدار من GDK.

تنفيذ مسار المصادقة

يوضح الرسم التخطيطي التالي تدفق المصادقة الأساسي خدمات GDK الزجاجية:

لتنفيذ مسار المصادقة:

  1. عندما يشغّل المستخدمون Glassware في MyGlass، تتم إعادة توجيههم إلى عنوان URL المخصص للمصادقة تتضمّن هذه الطلبات مَعلمة طلب بحث اسمها. userToken التي تحتاج إلى استخدامها لاحقًا.

  2. يُدخل المستخدم بيانات اعتماده في صفحة المصادقة.

  3. يتحقّق الخادم من بيانات اعتماد المستخدم. إذا كانت بيانات الاعتماد صالحة، طلب Mirror API من خلال تنفيذ طريقة mirror.accounts.insert. هذه الطريقة تحديد نطاق https://www.googleapis.com/auth/glass.thirdpartyauth عند إنشاء إنشاء نسخة مطابقة من عنصر الخدمة أمثلة على إجراء طلب البيانات من واجهة برمجة التطبيقات باستخدام أحد الإعدادات الأولية ويتم عرض HTTP أو Java في أمثلة إنشاء الحسابات.

    لا تطابق المعلمات ونص الطلب الذي تقدمه أدناه المعلومات التي ستقدّمها إلى جهاز AccountManager الخاص بنظام التشغيل Android إذا الذين ينشئون الحساب على الجهاز مباشرةً.

    اسم الموقع القيمة الوصف
    features[] قائمة بالسلاسل قائمة الميزات (انظر AccountManager.hasFeatures).
    password سلسلة تُعد كلمة مرور الحساب (انظر AccountManager.getPassword). ننصحك بما يلي: عدم تخزين كلمة المرور الفعلية للمستخدم هذا الحقل، ولكن بدلاً من ذلك يمكنك استخدامه لتخزين بيانات خاصة البيانات مثل الرمز المميز للتحديث.
    userData[] قائمة الكائنات زوج واحد أو أكثر من بيانات المستخدمين المرتبطة بالحساب (راجع AccountManager.getUserData).
    userData[].key سلسلة يشير هذا المصطلح إلى المفتاح المرتبط بقيمة مفتاح معيّنة لبيانات مستخدم معيّن. زوج.
    userData[].value سلسلة القيمة المرتبطة بقيمة معيّنة لمفتاح بيانات مستخدم زوج.
    authTokens[] قائمة الكائنات رمز واحد أو أكثر من الرموز المميّزة للمصادقة المرتبطة بالحساب (راجع AccountManager.getAuthToken).
    authTokens[].type سلسلة نوع الرمز المميز للمصادقة.
    authTokens[].authToken سلسلة رمز المصادقة.
  4. عند تلقّي طلب mirror.account.insert، ترسل Mirror API طلبًا الحساب إلى أجهزة Glass الخاصة بالمستخدم، حيث يمكنك الآن الوصول إليه باستخدام الفئة AccountManager.

اتّبِع الإرشادات التالية لتنفيذ خطوات مصادقة سهلة الاستخدام:

  • حسِّن تدفقك للأجهزة الجوّالة.
  • إذا كان للتدفق نطاق وألغاه المستخدم، فاحصل على .
  • تأكد من أن النطاقات التي تطلبها قيد الاستخدام بالفعل في Glassware.
  • إذا كان من الممكن ربط حساب مستخدم، تأكَّد من ربطه.
  • ويجب الاحتفاظ بنسخة احتياطية من بيانات المستخدم على السحابة الإلكترونية حيثما أمكن.

للحفاظ على الاتساق في مصادقة Glassware، استخدم أحد الخيارات التالية: مسارات المصادقة:

نسخة مطابقة أو مختلطة بدون حساب

  1. بعد التبديل إلى MyGlass، سيفتح عنوان URL المخصص للمصادقة في نافذة منبثقة.
  2. يؤدي ذلك إلى إرسال المستخدِم مباشرةً إلى النطاقات لقبولها.
  3. بعد أن يقبل المستخدم النطاقات أو يلغيها، أغلِق النافذة المنبثقة.

النسخ المطابق باستخدام حساب

  1. بعد التبديل إلى MyGlass، سيفتح عنوان URL المخصص للمصادقة في نافذة منبثقة.
    • إذا سبق للمستخدم تسجيل الدخول إلى خدمتك، أرسِل المستخدم مباشرةً للنطاقات.
    • في حال لم يسجّل المستخدم الدخول، عليك عرض حقول تسجيل الدخول والسماح له بتسجيل الدخول. إلى الخدمة، ثم إرسالها إلى النطاقات.
    • إذا لم يكن لدى المستخدم حساب، يُرجى تقديم رابط لإنشاء الحساب. ويجب أن تتوفر للمستخدمين طريقة لإنشاء حساب كجزء من عملية التركيب.
  2. يقبل المستخدم النطاقات.
    • إذا كانت Glassware بها إعدادات قابلة للتهيئة، فأرسل المستخدم إلى صفحة الإعدادات مع تحديد قيم افتراضية معقولة.
    • إذا لم يكن لدى Glassware إعدادات قابلة للتهيئة، فأرسل المستخدم إلى صفحة تأكيد. إغلاق النافذة المنبثقة في حال عدم ضبط أي إعدادات إضافية مطلوبة.

مختلطة مع حساب

  1. بعد التبديل إلى MyGlass، سيفتح عنوان URL المخصص للمصادقة في نافذة منبثقة.
    • إذا سبق للمستخدم تسجيل الدخول إلى خدمتك، أرسِل المستخدم مباشرةً للنطاقات.
    • في حال لم يسجّل المستخدم الدخول، عليك عرض حقول تسجيل الدخول والسماح له بتسجيل الدخول. ثم إرسالها إلى النطاقات.
    • إذا لم يكن المستخدم لديه حساب، قدِّم رابطًا لإنشاء حساب.
  2. يقبل المستخدم النطاقات.
  3. أرسِل طلبًا إلى Mirror API لإدراج حساب GDK.
    • إرسال المستخدم إلى صفحة الإعدادات مع اختيار قيم تلقائية معقولة
    • أرسِل صفحة تأكيد إلى المستخدم. أغلِق النافذة المنبثقة إذا لم تكن هناك لغات إضافية التهيئة مطلوبة.

نسخة مطابقة أو مختلطة مع حساب ونطاقات مخصّصة

  1. بعد التبديل إلى MyGlass، سيفتح عنوان URL المخصص للمصادقة في نافذة منبثقة.
    • إذا كان المستخدم قد سجّل الدخول إلى خدمتك من قبل، أرسِل المستخدم إلى النطاقات الداخلية
    • في حال لم يسجّل المستخدم الدخول، عليك عرض حقول تسجيل الدخول والسماح له بتسجيل الدخول. ثم إرسالها إلى نطاقاتك الداخلية
    • إذا لم يكن المستخدم لديه حساب، قدِّم رابطًا لإنشاء حساب.
  2. عندما يقبل المستخدِم نطاقاتك المخصَّصة، أرسِله إلى نطاقات Google.
  3. أرسِل طلبًا إلى Mirror API لإدراج حساب GDK.
    • إرسال المستخدم إلى صفحة الإعدادات مع اختيار قيم تلقائية معقولة
    • أرسِل صفحة تأكيد إلى المستخدم. أغلِق النافذة المنبثقة إذا لم تكن هناك لغات إضافية التهيئة مطلوبة.

نسخة مطابقة أو مختلطة مع تطبيق Android/iPhone

  1. بعد التبديل إلى MyGlass، سيفتح عنوان URL المخصص للمصادقة في نافذة منبثقة.
  2. يؤدي ذلك إلى إرسال المستخدِم مباشرةً إلى النطاقات لقبولها.
  3. بعد أن يقبل المستخدم النطاقات:
    • إذا كان المستخدم لديه التطبيق المصاحب وتمت مصادقته، أغلِق النافذة المنبثقة. نافذة.
    • وإذا لم يكن كذلك، يمكنك توجيه المستخدم إلى صفحة بينية توجهه إلى تنزيل تطبيق من "متجر Google Play" أو متجر iOS
  4. بعد تثبيت التطبيق والمصادقة، أغلِق النافذة المنبثقة

GDK وبدون حساب

إن تشغيل Glassware في MyGlass هو كل ما هو مطلوب لهذا التدفق.

GDK باستخدام حساب

  1. بعد التبديل إلى MyGlass، سيفتح عنوان URL المخصص للمصادقة في نافذة منبثقة.
    • إذا كان المستخدم قد سجّل الدخول إلى خدمتك من قبل، أرسِله إلى الموعد.
    • في حال لم يسجّل المستخدم الدخول، عليك عرض حقول تسجيل الدخول والسماح له لتسجيل الدخول، ثم إرسالها إلى شاشة التأكيد.
    • إذا لم يكن المستخدم لديه حساب، قدِّم رابطًا لإنشاء حساب.
  2. يقبل المستخدم النطاقات.
  3. أرسِل طلبًا إلى Mirror API لإدراج حساب GDK.
  4. عرض شاشة التأكيد، وإغلاق الشاشة بعد عرضها فترة زمنية قصيرة.

أمثلة على إنشاء الحسابات

استخدام مكتبات البرامج لواجهة Mirror API متى أمكن ذلك. سيؤدي هذا إلى الاتصال بـ mirror.accounts.insert لإنشاء الحساب بشكل أسهل.

مثال HTTP Raw

يوضح المثال أدناه عنوان URL للطلب ومثالاً على نص JSON المتوقع. إنشاء طلبات HTTP أولية نيابةً عن خدمة أن الحساب أكثر تعقيدًا (راجع استخدام OAuth 2.0 لتطبيقات خادم إلى خادم للحصول على التفاصيل الكاملة)، لذا ننصحك باستخدام إحدى مكتبات البرامج إن أمكن لتسهيل ذلك.

طريقة الطلب وعنوان URL:

POST https://www.googleapis.com/mirror/v1/accounts/{userToken}/com.example.myapp/username%40email.com

نص الطلب:

{
    "features": ["a", "b", "c"],
    "userData": [
        { "key": "realName", "value": "Rusty Shackleford" },
        { "key": "foo", "value": "bar" }
    ],
    "authTokens": [
        { "type": "your_token_type", "authToken": "zT419Ma3X2pBr0L..." }
    ]
}

استبدِل {userToken} في عنوان URL للطلب بالرمز المميّز الذي تم تمريره إلى عنوان URL المخصص للمصادقة في الخطوة 1 من تنفيذ مسار المصادقة:

مثال على Java

يوضح هذا المثال كيفية استخدام مكتبة برامج Java لاستدعاء mirror.accounts.insert

import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.jackson.JacksonFactory;
import com.google.api.services.mirror.Mirror;
import com.google.api.services.mirror.model.Account;
import com.google.api.services.mirror.model.AuthToken;
import com.google.common.collect.Lists;
...

/** Email of the Service Account */
private static final String SERVICE_ACCOUNT_EMAIL =
    "<some-id>@developer.gserviceaccount.com";

/** Path to the Service Account's Private Key file */
private static final String SERVICE_ACCOUNT_PKCS12_FILE_PATH =
    "/path/to/<public_key_fingerprint>-privatekey.p12";

/** The account type, usually based on your company or app's package. */
private static final String ACCOUNT_TYPE = "com.example.myapp";

/** The Mirror API scopes needed to access the API. */
private static final String MIRROR_ACCOUNT_SCOPES =
    "https://www.googleapis.com/auth/glass.thirdpartyauth";

/**
 * Build and returns a Mirror service object authorized with the service accounts.
 *
 * @return Mirror service object that is ready to make requests.
 */
public static Mirror getMirrorService() throws GeneralSecurityException,
    IOException, URISyntaxException {
  HttpTransport httpTransport = new NetHttpTransport();
  JacksonFactory jsonFactory = new JacksonFactory();
  GoogleCredential credential = new GoogleCredential.Builder()
      .setTransport(httpTransport)
      .setJsonFactory(jsonFactory)
      .setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
      .setServiceAccountScopes(MIRROR_ACCOUNT_SCOPES)
      .setServiceAccountPrivateKeyFromP12File(
          new java.io.File(SERVICE_ACCOUNT_PKCS12_FILE_PATH))
      .build();
  Mirror service = new Mirror.Builder(httpTransport, jsonFactory, null)
      .setHttpRequestInitializer(credential).build();
  return service;
}

/**
 * Creates an account and causes it to be synced up with the user's Glass.
 * This example only supports one auth token; modify it if you need to add
 * more than one, or to add features, user data, or the password field.
 *
 * @param mirror the service returned by getMirrorService()
 * @param userToken the user token sent to your auth callback URL
 * @param accountName the account name for this particular user
 * @param authTokenType the type of the auth token (chosen by you)
 * @param authToken the auth token
 */
public static void createAccount(Mirror mirror, String userToken, String accountName,
    String authTokenType, String authToken) {
  try {
    Account account = new Account();
    List<AuthToken> authTokens = Lists.newArrayList(
        new AuthToken().setType(authTokenType).setAuthToken(authToken));
    account.setAuthTokens(authTokens);
    mirror.accounts().insert(
        userToken, ACCOUNT_TYPE, accountName, account).execute();
  } catch (IOException e) {
    e.printStackTrace();
  }
}

استرداد الحسابات على Glass

استرداد Account واستخدامه تشبه الكائنات على Glass استخدام AccountManager

  1. يُرجى تقديم أذونات البيان التالية في ملف AndroidManifest.xml:

    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.USE_CREDENTIALS" />
    
  2. استرداد حسابات Glassware:

    AccountManager accountManager = AccountManager.get(mContext);
    // Use your Glassware's account type.
    Account[] accounts = accountManager.getAccountsByType("com.example");
    
    // Pick an account from the list of returned accounts.
    
  3. يمكنك استرداد الرمز المميّز للمصادقة من Account:

    // Your auth token type.
    final String AUTH_TOKEN_TYPE = "oauth2:https://www.example.com/auth/login";
    
    accountManager.getAuthToken(account, AUTH_TOKEN_TYPE, null, activity, new AccountManagerCallback<Bundle>() {
        public void run(AccountManagerFuture<Bundle> future) {
            try {
                String token = future.getResult().getString(AccountManager.KEY_AUTHTOKEN);
                // Use the token.
            } catch (Exception e) {
                // Handle exception.
            }
        }
    }, null);