GDK ग्लासवेयर के लिए पुष्टि

अगर आपके GDK Glassware को किसी वेब सेवा के लिए उपयोगकर्ताओं की पुष्टि करनी है, तो GDK एक ऐसा एपीआई उपलब्ध कराता है जिसकी मदद से उपयोगकर्ता, आपका Glassware इंस्टॉल करते समय अपने क्रेडेंशियल डाल सकते हैं.

इस एपीआई का इस्तेमाल करके, आप Glass इस्तेमाल करने वाले लोगों को एक जैसा उपयोगकर्ता अनुभव देते हैं. साथ ही, अपनी ज़रूरत के हिसाब से पुष्टि करने की स्कीम को लागू करने के खर्च से भी बचें.

Google API सेवा खाता बनाना

जब प्रमाणीकरण सही तरीके से सेट अप हो जाता है, तब आपके वेब ऐप्लिकेशन का बैक एंड उपयोगकर्ताओं द्वारा आपकी सेवा को प्रमाणित करने के बाद उनकी खाता जानकारी को Glass पर भेजने के लिए Mirror API का उपयोग करता है.

इस एपीआई को ऐक्सेस करने के लिए, Google API प्रोजेक्ट बनाएं और "सेवा खाते" के लिए क्लाइंट आईडी बनाएं (और "वेब ऐप्लिकेशन" के लिए. सेवा खाते का इस्तेमाल करने पर, उपयोगकर्ताओं को Glass पर अपने क्रेडेंशियल डालने के लिए, आपके ऐप्लिकेशन को अलग से अनुमति देने की ज़रूरत नहीं होती. साथ ही, उन्हें OAuth की अनुमतियों वाले पेज और पुष्टि करने वाले आपके पेज, दोनों पर फिर से नहीं जाना पड़ता.

यह खाता बनाने के लिए:

  1. Google Developers Console पर जाएं.
  2. प्रोजेक्ट बनाएं बटन पर क्लिक करें और मांगी गई जानकारी डालें.
  3. प्रोजेक्ट बनाने के बाद, प्रोजेक्ट नंबर नोट कर लें, जिसकी आपको बाद में ज़रूरत पड़ेगी.
  4. एपीआई और पुष्टि में जाकर, एपीआई पर क्लिक करें और अपने नए प्रोजेक्ट के लिए Google Mirror API चालू करें.
  5. एपीआई और पुष्टि में जाकर, क्रेडेंशियल पर क्लिक करें. इसके बाद, नया क्लाइंट आईडी बनाएं पर क्लिक करें. प्रोजेक्ट के लिए नया OAuth 2.0 क्लाइंट आईडी बनाने के लिए, सेवा खाता लेबल वाले बॉक्स पर सही का निशान लगाएं.
  6. एक पॉप-अप विंडो से आपको पता चलेगा कि आपके कंप्यूटर पर निजी पासकोड डाउनलोड किया जा रहा है. साथ ही, आपको उस निजी पासकोड का पासवर्ड भी मिल जाएगा. इस विंडो को बंद करने के बाद, इस निजी पासकोड को डाउनलोड नहीं किया जा सकेगा या पासवर्ड फिर से नहीं देखा जा सकेगा. अगर यह पासवर्ड कभी मिट जाता है, तो आपको नया पासवर्ड बनाना होगा.
  7. सेवा खाते के ईमेल पते को नोट कर लें. आपको एपीआई कॉल करने के लिए, बाद में इस पते की ज़रूरत पड़ेगी.

अपने ग्लासवेयर के बारे में मेटाडेटा देना

ग्लासवेयर सबमिट करने के लिए, आपको यह जानकारी देनी होगी. इससे हम आपके ग्लासवेयर को लागू करने पर सही तरीके से पुष्टि करने के लिए इसे सेट अप कर पाते हैं.

  • आपका पुष्टि करने का यूआरएल, जिस पर उपयोगकर्ताओं को रीडायरेक्ट किया जाता है. ऐसा तब होता है, जब वे MyGlass में आपका Glassware चालू करते हैं.
  • खाता टाइप (Glass डिवाइस पर Android AccountManager एपीआई को कॉल करते समय, इस स्ट्रिंग का इस्तेमाल किया जाएगा)
  • AndroidManifest.xml में मौजूद आपके ऐप्लिकेशन का पैकेज का नाम
  • ऊपर बनाए गए प्रोजेक्ट का Google API प्रोजेक्ट आईडी
  • MyGlass पर अपलोड करने के लिए APK. जांच के लिए, आपको यह APK सिर्फ़ एक बार देना होगा. इससे, MyGlass से Glassware चालू होने पर, शुरुआती डाउनलोड को मैनेज किया जा सकता है. इसके बाद, अपने डिवाइस पर APK को ओवरराइट करके, स्थानीय तौर पर बार-बार टेस्ट किया जा सकता है और डीबग किया जा सकता है. ध्यान दें कि इस APK के लिए इन शर्तों को पूरा करना ज़रूरी है:
    • यह ज़िप-अलाइन होना चाहिए.
    • इसके बाद, आपको पैकेज के नाम या निजी हस्ताक्षर करने की कुंजी में कोई बदलाव नहीं करना चाहिए. अगर इनमें से कोई भी बदलाव किया जाता है, तो Android पैकेज मैनेजर अपग्रेड करने की अनुमति नहीं देता.
    • इसका साइज़ 50 मेगाबाइट से कम होना चाहिए.
    • इसे GDK के नए वर्शन का इस्तेमाल करके कंपाइल किया जाना चाहिए.

पुष्टि करने का फ़्लो लागू करना

यहां दिए गए डायग्राम में, GDK Glassware के लिए पुष्टि करने का बुनियादी फ़्लो दिखाया गया है:

पुष्टि करने का फ़्लो लागू करने के लिए:

  1. जब उपयोगकर्ता MyGlass में आपका Glassware चालू करते हैं, तो उन्हें पुष्टि करने के लिए दिए गए आपके यूआरएल पर रीडायरेक्ट किया जाता है. इन अनुरोधों में, userToken नाम का एक क्वेरी पैरामीटर शामिल होता है. इसका इस्तेमाल आपको बाद में करना होगा.

  2. उपयोगकर्ता, पुष्टि करने वाले आपके पेज पर अपने क्रेडेंशियल डालता है.

  3. आपका सर्वर, उपयोगकर्ता के क्रेडेंशियल की पुष्टि करता है. अगर क्रेडेंशियल मान्य हैं, तो mirror.accounts.insert तरीके के लिए Mirror API कॉल करें. इस तरीके के लिए, आपको अपनी डुप्लीकेट सेवा का ऑब्जेक्ट बनाते समय, https://www.googleapis.com/auth/glass.thirdpartyauth स्कोप की जानकारी देनी होगी. रॉ एचटीटीपी या Java का इस्तेमाल करके, यह एपीआई कॉल करने के उदाहरण खाता बनाने के उदाहरण में दिए गए हैं.

    यहां दिए गए पैरामीटर और अनुरोध बॉडी में वही जानकारी दी गई है जो सीधे डिवाइस पर खाता बनाते समय, Android के AccountManager को दी जाती है.

    प्रॉपर्टी का नाम मान ब्यौरा
    features[] स्ट्रिंग की सूची सुविधाओं की सूची ( AccountManager.hasFeatures देखें).
    password स्ट्रिंग खाते का पासवर्ड ( AccountManager.getPassword देखें). हमारा सुझाव है कि आप इस फ़ील्ड में उपयोगकर्ता का असल पासवर्ड सेव करें. इसके बजाय, इसका इस्तेमाल रीफ़्रेश टोकन जैसे लंबे समय तक चलने वाले निजी डेटा को सेव करने के लिए करें.
    userData[] ऑब्जेक्ट की सूची खाते से जुड़े उपयोगकर्ता डेटा के एक या एक से ज़्यादा जोड़े ( AccountManager.getUserData देखें).
    userData[].key स्ट्रिंग उपयोगकर्ता डेटा के किसी खास की-वैल्यू पेयर से जुड़ी की.
    userData[].value स्ट्रिंग उपयोगकर्ता डेटा के किसी खास की-वैल्यू पेयर से जुड़ी वैल्यू.
    authTokens[] ऑब्जेक्ट की सूची खाते से जुड़े एक या एक से ज़्यादा पुष्टि वाले टोकन ( AccountManager.getAuthToken देखें).
    authTokens[].type स्ट्रिंग पुष्टि करने वाले टोकन का टाइप.
    authTokens[].authToken स्ट्रिंग पुष्टि करने वाला टोकन.
  4. mirror.account.insert का अनुरोध मिलने पर, मिरर एपीआई, खाते को उपयोगकर्ता के Glass डिवाइस(डिवाइसों) पर भेजता है, जहां से अब AccountManager क्लास का इस्तेमाल करके उसे ऐक्सेस किया जा सकता है.

उपयोगकर्ता के हिसाब से पुष्टि करने की प्रक्रिया लागू करने के लिए, इन दिशा-निर्देशों का पालन करें:

  • मोबाइल डिवाइसों के लिए अपने फ़्लो को ऑप्टिमाइज़ करें.
  • अगर आपके फ़्लो का कोई दायरा है और उपयोगकर्ता उसे रद्द करता है, तो गड़बड़ी का एक अच्छा मैसेज डिज़ाइन करें.
  • पक्का करें कि आपके अनुरोध किए गए दायरों का इस्तेमाल, आपके ग्लासवेयर में किया जा रहा हो.
  • अगर किसी उपयोगकर्ता खाते को कनेक्ट किया जा सकता है, तो पक्का करें कि आपने उसे कनेक्ट किया हो.
  • जहां भी हो सके, उपयोगकर्ता के डेटा का बैक अप क्लाउड पर लेना चाहिए.

Glassware की पुष्टि करने के लिए, पुष्टि करने के इनमें से किसी एक फ़्लो का इस्तेमाल करें:

खाते के बिना मिरर या हाइब्रिड

  1. MyGlass में टॉगल करने के बाद, पुष्टि करने वाला यूआरएल पॉप-अप में खुलता है.
  2. इससे उपयोगकर्ता को सीधे तौर पर स्कोप पर भेजा जाता है, ताकि वह उन्हें स्वीकार कर सके.
  3. जब उपयोगकर्ता स्कोप स्वीकार या रद्द कर ले, तब पॉप-अप बंद करें.

किसी खाते से स्क्रीन शेयर करना

  1. MyGlass में टॉगल करने के बाद, पुष्टि करने वाला यूआरएल पॉप-अप में खुलता है.
    • अगर उपयोगकर्ता ने पहले से ही आपकी सेवा में साइन इन किया हुआ है, तो उपयोगकर्ता को सीधे स्कोप में भेजें.
    • अगर उपयोगकर्ता ने साइन इन नहीं किया है, तो साइन इन फ़ील्ड दिखाएं और उसे अपनी सेवा में साइन इन करने की अनुमति दें. इसके बाद, उसे स्कोप पर भेजें.
    • अगर उपयोगकर्ता के पास खाता नहीं है, तो खाता बनाने के लिए लिंक दें. उपयोगकर्ताओं के पास, इंस्टॉल फ़्लो की प्रोसेस के तहत खाता बनाने का विकल्प होना चाहिए.
  2. उपयोगकर्ता स्कोप स्वीकार करता है.
    • अगर आपके Glassware में कॉन्फ़िगर की जा सकने वाली सेटिंग हैं, तो उपयोगकर्ता को सेटिंग पेज पर भेजें. साथ ही, उस पर डिफ़ॉल्ट तौर पर सही विकल्प चुनें.
    • अगर आपके Glassware में कॉन्फ़िगर की जा सकने वाली सेटिंग नहीं हैं, तो उपयोगकर्ता को पुष्टि करने वाले पेज पर भेजें. अगर किसी अन्य कॉन्फ़िगरेशन की ज़रूरत न हो, तो पॉप-अप को बंद कर दें.

खाते के साथ हाइब्रिड

  1. MyGlass में टॉगल करने के बाद, पुष्टि करने वाला यूआरएल एक पॉप-अप में खुलता है.
    • अगर उपयोगकर्ता ने आपकी सेवा में पहले से साइन इन किया हुआ है, तो उपयोगकर्ता को सीधे तौर पर स्कोप पर भेजें.
    • अगर उपयोगकर्ता ने साइन इन नहीं किया है, तो साइन इन फ़ील्ड दिखाएं. इसके बाद, उसे साइन इन करने की अनुमति दें और फिर उसे दायरों में भेजें.
    • अगर उपयोगकर्ता के पास खाता नहीं है, तो खाता बनाने के लिए लिंक दें.
  2. उपयोगकर्ता, स्कोप स्वीकार करता है.
  3. GDK खाता डालने के लिए, Mirror API को अनुरोध भेजें.
    • उपयोगकर्ता को सेटिंग पेज पर भेजें. इस पेज पर, डिफ़ॉल्ट तौर पर सही विकल्प चुने गए होंगे.
    • उपयोगकर्ता को पुष्टि करने वाला पेज भेजें. अगर किसी अन्य कॉन्फ़िगरेशन की ज़रूरत नहीं है, तो पॉप-अप को बंद कर दें.

खाते और अपने हिसाब से स्कोप के साथ डुप्लीकेट या हाइब्रिड

  1. MyGlass में टॉगल करने के बाद, पुष्टि करने वाला यूआरएल एक पॉप-अप में खुलता है.
    • अगर उपयोगकर्ता ने आपकी सेवा में पहले से साइन इन किया हुआ है, तो उसे अपने इंटरनल स्कोप पर भेजें
    • अगर उपयोगकर्ता ने साइन इन नहीं किया है, तो साइन इन फ़ील्ड दिखाएं और उन्हें साइन इन करने की अनुमति दें. इसके बाद, उन्हें अपने इंटरनल स्कोप पर भेजें
    • अगर उपयोगकर्ता के पास खाता नहीं है, तो खाता बनाने के लिए लिंक दें.
  2. जब उपयोगकर्ता आपके कस्टम स्कोप स्वीकार कर लेता है, तो उसे Google के स्कोप पर भेजें.
  3. GDK खाता डालने के लिए, Mirror API को अनुरोध भेजें.
    • उपयोगकर्ता को सेटिंग पेज पर भेजें. इस पेज पर, डिफ़ॉल्ट तौर पर सही विकल्प चुने गए होंगे.
    • उपयोगकर्ता को पुष्टि करने वाला पेज भेजें. अगर किसी अन्य कॉन्फ़िगरेशन की ज़रूरत नहीं है, तो पॉप-अप को बंद कर दें.

Android/iPhone ऐप्लिकेशन के साथ मिरर या हाइब्रिड

  1. MyGlass में टॉगल करने के बाद, पुष्टि करने वाला यूआरएल पॉप-अप में खुलता है.
  2. इससे उपयोगकर्ता को सीधे तौर पर स्कोप पर भेजा जाता है, ताकि वह उन्हें स्वीकार कर सके.
  3. उपयोगकर्ता के दायरों को स्वीकार करने के बाद:
    • अगर उपयोगकर्ता के पास साथी ऐप्लिकेशन है और उसकी पुष्टि हो चुकी है, तो पॉप-अप विंडो बंद करें.
    • अगर ऐसा नहीं है, तो उपयोगकर्ता को पेज पर अचानक दिखने वाले विज्ञापन पर भेजें, जो उन्हें Google Play Store या iOS स्टोर से ऐप्लिकेशन डाउनलोड करने के लिए निर्देश देता हो.
  4. ऐप्लिकेशन इंस्टॉल करने और पुष्टि करने के बाद, पॉप-अप विंडो बंद करें

GDK और कोई खाता नहीं

इस फ़्लो के लिए, MyGlass में Glassware को टॉगल करना ही ज़रूरी है.

खाते के साथ GDK

  1. MyGlass में टॉगल करने के बाद, पुष्टि करने वाला यूआरएल एक पॉप-अप में खुलता है.
    • अगर उपयोगकर्ता ने पहले ही आपकी सेवा में साइन इन किया हुआ है, तो उपयोगकर्ता को पुष्टि स्क्रीन पर भेजें.
    • अगर उपयोगकर्ता ने साइन इन नहीं किया है, तो साइन इन फ़ील्ड दिखाएं और उन्हें साइन इन करने की अनुमति दें. इसके बाद, उन्हें पुष्टि करने वाली स्क्रीन पर भेजें.
    • अगर उपयोगकर्ता के पास खाता नहीं है, तो खाता बनाने के लिए लिंक दें.
  2. उपयोगकर्ता, स्कोप स्वीकार करता है.
  3. GDK खाता डालने के लिए, Mirror API को अनुरोध भेजें.
  4. पुष्टि करने के लिए स्क्रीन दिखाएं और कुछ समय के लिए दिखाने के बाद उसे बंद करें.

खाता बनाने के उदाहरण

जब भी हो सके, Mirror API के लिए क्लाइंट लाइब्रेरी का इस्तेमाल करें. इससे खाता बनाने के लिए, mirror.accounts.insert को कॉल करना आसान हो जाता है.

रॉ एचटीटीपी का उदाहरण

यहां दिए गए उदाहरण में, सिर्फ़ अनुरोध का यूआरएल दिखाया गया है. साथ ही, JSON बॉडी का एक उदाहरण भी दिया गया है, जिसे इस पेज पर इकट्ठा किया जा सकता है. किसी सेवा खाते की ओर से रॉ एचटीटीपी अनुरोध करना बहुत मुश्किल है (पूरी जानकारी के लिए, सर्वर टू सर्वर ऐप्लिकेशन के लिए OAuth 2.0 का इस्तेमाल करना सेक्शन देखें). इसलिए, हमारा सुझाव है कि अगर हो सके, तो आप Google API क्लाइंट लाइब्रेरी का इस्तेमाल करें.

अनुरोध का तरीका और यूआरएल:

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} को उस टोकन से बदलें जिसे पुष्टि करने की प्रोसेस लागू करने के पहले चरण में, पुष्टि करने वाले आपके यूआरएल पर पास किया गया था.

Java का उदाहरण

इस उदाहरण में, mirror.accounts.insert को कॉल करने के लिए Java क्लाइंट लाइब्रेरी का इस्तेमाल करने का तरीका बताया गया है

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 पर खाते वापस पाना

Glass पर Account ऑब्जेक्ट को ढूंढना और उनका इस्तेमाल करना, स्टैंडर्ड Android 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);