अगर आपके GDK ग्लासवेयर को किसी वेब सेवा के लिए उपयोगकर्ताओं को प्रमाणित करने की ज़रूरत है, GDK एक ऐसा एपीआई उपलब्ध कराता है जिसकी मदद से, लोग तब अपने क्रेडेंशियल डाल सकते हैं, जब वे अपना ग्लासवेयर इंस्टॉल करें.
इस एपीआई का इस्तेमाल करने का मतलब है कि आपने एक ही उपयोगकर्ता को ग्लास उपयोगकर्ताओं को बेहतरीन अनुभव मिल सकता है. कस्टम ऑथेंटिकेशन स्कीम.
Google API सेवा खाता बनाना
जब प्रमाणीकरण सही तरीके से सेट अप हो, तब आपके वेब ऐप्लिकेशन का बैक एंड उपयोगकर्ताओं को पुश करने के लिए Mirror API का इस्तेमाल करता है Glass को खाते की जानकारी देनी है आपकी सेवा से पुष्टि करने के बाद.
इस एपीआई को ऐक्सेस करने के लिए, Google API प्रोजेक्ट बनाएं और फिर "सेवा खाते" के लिए क्लाइंट आईडी बनाना ("वेब ऐप्लिकेशन" नहीं). इन्होंने बदलाव किया है तो उपयोगकर्ताओं को अलग से ऐप्लिकेशन को अपने क्रेडेंशियल Glass से जोड़ने की अनुमति नहीं देनी होगी. OAuth अनुमतियों वाले पेज और आपके खुद के पुष्टि करने वाले पेज, दोनों के साथ दिखाई जानी चाहिए फिर से कोशिश करें.
यह खाता बनाने के लिए:
- Google Developers Console पर जाएं.
- प्रोजेक्ट बनाएं बटन पर क्लिक करें और मांगी गई जानकारी डालें.
- प्रोजेक्ट बनाने के बाद, प्रोजेक्ट नंबर नोट कर लें, आपको बाद में ज़रूरत होगी.
- एपीआई और auth, API पर क्लिक करें और Google मिरर API को चालू करें को शामिल करें.
- एपीआई और पुष्टि करने के बाद, क्रेडेंशियल पर क्लिक करें, फिर नया क्लाइंट बनाएं पर क्लिक करें आईडी. नया OAuth 2.0 बनाने के लिए, सेवा खाता लेबल वाले बॉक्स को चुनें क्लाइंट आईडी डालें.
- एक पॉप-अप विंडो से आपको पता चलेगा कि निजी पासकोड डाउनलोड किया जा रहा है आपके कंप्यूटर से जुड़ जाता है और उस निजी कुंजी का पासवर्ड आपको देता है. इस विंडो को बंद करने के बाद, इसे निजी के तौर पर डाउनलोड नहीं किया जा सकेगा या पासवर्ड फिर से देखें. अगर वे कभी खो जाती हैं, तो आपको एक नया एक.
- सेवा खाते का ईमेल पता नोट कर लें. इसके लिए, आपको इनकी ज़रूरत पड़ेगी बाद में एपीआई कॉल कर सकते हैं.
अपने ग्लासवेयर के बारे में मेटाडेटा देना
जब आप अपना ग्लासवेयर सबमिट करने के लिए तैयार हों, तो आपको नीचे दी गई जानकारी देखें. इससे हम आपके Glassware को सही तरीके से प्रमाणित किया जाना चाहिए.
- आपका पुष्टि करने वाला यूआरएल, जिस पर लोगों को कब रीडायरेक्ट किया जाता है वे MyGlass में आपके ग्लासवेयर को चालू कर देते हैं.
- खाता प्रकार (वह स्ट्रिंग जिसका उपयोग आप
Glass डिवाइस पर Android
AccountManager
API) - आपके
AndroidManifest.xml
से, आपके ऐप्लिकेशन के पैकेज का नाम - आपके बनाए हुए प्रोजेक्ट का संख्या वाला Google API प्रोजेक्ट आईडी ऊपर
- MyGlass पर अपलोड करने के लिए APK. जांच के लिए, आपको सिर्फ़
जब आपका ग्लासवेयर
MyGlass से चालू किया गया; इसके बाद, स्थानीय तौर पर बार-बार
और डीबग किया जा सकता है
अपने डिवाइस पर APK को ओवरराइट करके देखें. ध्यान दें कि इस APK को
जैसे:
- इसे ज़िप-अलाइन होना चाहिए.
- आपको पैकेज के नाम या निजी साइनिंग में कोई बदलाव नहीं करना चाहिए कुंजी जोड़नी है (Android पैकेज मैनेजर अपग्रेड की अनुमति नहीं देता अगर इनमें से कोई भी बदलाव होता है).
- इसका साइज़ 50 मेगाबाइट से कम होना चाहिए.
- इसे जीडीके के सबसे नए वर्शन का इस्तेमाल करके कंपाइल किया जाना चाहिए.
पुष्टि करने का फ़्लो लागू करना
नीचे दिया गया डायग्राम, पुष्टि करने का बुनियादी फ़्लो दिखाता है GDK ग्लासवेयर:
पुष्टि करने का फ़्लो लागू करने के लिए:
जब उपयोगकर्ता MyGlass में आपके Glassware को चालू करते हैं, तो उन्हें रीडायरेक्ट किया जाता है अपने पुष्टि करने वाले यूआरएल में कर सकते हैं. इन अनुरोधों में
userToken
का इस्तेमाल करें, जिसे आपको बाद में इस्तेमाल करना होगा.उपयोगकर्ता, पुष्टि करने वाले पेज पर अपने क्रेडेंशियल डालता है.
आपका सर्वर, उपयोगकर्ता के क्रेडेंशियल की पुष्टि करता है. अगर क्रेडेंशियल मान्य हैं, तो
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
स्ट्रिंग पुष्टि करने वाला टोकन. mirror.account.insert
का अनुरोध मिलने पर, मिरर एपीआई पुश खाते को उपयोगकर्ता के Glass डिवाइस(डिवाइसों) के साथ लिंक करता है, जहां से अब आप उसे ऐक्सेस कर सकते हैंAccountManager
क्लास का इस्तेमाल करके.
पुष्टि करने के लिए सुझाए गए तरीके
उपयोगकर्ता को पुष्टि करने का आसान तरीका लागू करने के लिए, इन दिशा-निर्देशों का पालन करें:
- मोबाइल डिवाइसों के हिसाब से अपने फ़्लो को ऑप्टिमाइज़ करें.
- अगर आपके फ़्लो में कोई स्कोप है और उपयोगकर्ता उन्हें रद्द कर देता है, तो अच्छी तरह डिज़ाइन किया गया है. गड़बड़ी का मैसेज दिखना चाहिए.
- पक्का करें कि आपके अनुरोध किए गए दायरों का इस्तेमाल, आपके ग्लासवेयर में किया जा रहा हो.
- अगर किसी उपयोगकर्ता खाते को कनेक्ट किया जा सकता है, तो पक्का करें कि आपने उसे कनेक्ट किया हो.
- जहां भी हो सके, उपयोगकर्ता के डेटा का बैक अप क्लाउड पर लेना चाहिए.
ग्लासवेयर ऑथेंटिकेशन में समानता बनाए रखने के लिए, इनमें से किसी एक का इस्तेमाल करें ऑथेंटिकेशन फ़्लो:
बिना खाते के मिरर या हाइब्रिड
- MyGlass में टॉगल करने के बाद, पुष्टि करने वाला यूआरएल एक पॉप-अप में खुलता है.
- इससे उपयोगकर्ता को सीधे तौर पर स्कोप में भेजा जाता है, ताकि उसे स्वीकार किया जा सके.
- उपयोगकर्ता के स्कोप स्वीकार करने या रद्द करने के बाद, पॉप-अप बंद करें.
खाते का डुप्लीकेट वर्शन बनाएं
- MyGlass में टॉगल करने के बाद, पुष्टि करने वाला यूआरएल एक पॉप-अप में खुलता है.
- अगर उपयोगकर्ता ने पहले से ही आपकी सेवा में साइन इन किया हुआ है, तो उसे सीधे तौर पर ईमेल भेजें भी शामिल हो सकते हैं.
- अगर उपयोगकर्ता ने साइन इन नहीं किया है, तो साइन-इन फ़ील्ड दिखाएं. इसके बाद, उसे साइन करने की अनुमति दें में शामिल करना होगा और फिर उन्हें स्कोप में भेजना होगा.
- अगर उपयोगकर्ता के पास खाता नहीं है, तो खाता बनाने के लिए लिंक दें जोड़ें. उपयोगकर्ताओं के पास खाता बनाने का एक तरीका होना चाहिए, इंस्टॉल फ़्लो प्रोसेस है.
- उपयोगकर्ता स्कोप स्वीकार करता है.
- अगर आपके ग्लासवेयर की सेटिंग कॉन्फ़िगर की जा सकती हैं, तो उपयोगकर्ता को चुना गया सेटिंग पेज.
- अगर आपके ग्लासवेयर में कॉन्फ़िगर करने लायक सेटिंग नहीं हैं, तो उपयोगकर्ता को पुष्टि करने वाला पेज. अगर कोई अन्य कॉन्फ़िगरेशन न हो, तो पॉप-अप बंद कर दें आवश्यक.
खाते के साथ हाइब्रिड
- MyGlass में टॉगल करने के बाद, पुष्टि करने वाला यूआरएल एक पॉप-अप में खुलता है.
- अगर उपयोगकर्ता ने पहले से ही आपकी सेवा में साइन इन किया हुआ है, तो उसे सीधे तौर पर ईमेल भेजें भी शामिल हो सकते हैं.
- अगर उपयोगकर्ता ने साइन इन नहीं किया है, तो साइन इन वाले फ़ील्ड दिखाएं. इसके बाद, उसे साइन करने की अनुमति दें में डालें और फिर उन्हें स्कोप में भेजें.
- अगर उपयोगकर्ता के पास खाता नहीं है, तो खाता बनाने के लिए लिंक दें.
- उपयोगकर्ता स्कोप स्वीकार करता है.
- GDK खाता डालने के लिए, Mirror API को अनुरोध भेजें.
- उपयोगकर्ता को उचित डिफ़ॉल्ट चयनित के साथ सेटिंग पेज पर भेजें.
- उपयोगकर्ता को पुष्टि करने वाला पेज भेजें. अगर कोई अतिरिक्त विकल्प नहीं है, तो पॉप-अप बंद करें कॉन्फ़िगरेशन ज़रूरी है.
खाते और अपने हिसाब से स्कोप के साथ डुप्लीकेट या हाइब्रिड
- MyGlass में टॉगल करने के बाद, पुष्टि करने वाला यूआरएल एक पॉप-अप में खुलता है.
- अगर उपयोगकर्ता ने पहले से ही आपकी सेवा में साइन इन किया हुआ है, तो उसे अपनी अंदरूनी दायरे
- अगर उपयोगकर्ता ने साइन इन नहीं किया है, तो साइन इन वाले फ़ील्ड दिखाएं. इसके बाद, उसे साइन करने की अनुमति दें में बदल सकता है और फिर उन्हें अपने इंटरनल स्कोप में भेज सकता है
- अगर उपयोगकर्ता के पास खाता नहीं है, तो खाता बनाने के लिए लिंक दें.
- जब उपयोगकर्ता आपके कस्टम दायरों को स्वीकार कर ले, तो उपयोगकर्ता को Google के दायरों में भेजें.
- GDK खाता डालने के लिए, Mirror API को अनुरोध भेजें.
- उपयोगकर्ता को उचित डिफ़ॉल्ट चयनित के साथ सेटिंग पेज पर भेजें.
- उपयोगकर्ता को पुष्टि करने वाला पेज भेजें. अगर कोई अतिरिक्त विकल्प नहीं है, तो पॉप-अप बंद करें कॉन्फ़िगरेशन ज़रूरी है.
Android/iPhone ऐप्लिकेशन के साथ मिरर या हाइब्रिड
- MyGlass में टॉगल करने के बाद, पुष्टि करने वाला यूआरएल एक पॉप-अप में खुलता है.
- इससे उपयोगकर्ता को सीधे तौर पर स्कोप में भेजा जाता है, ताकि उसे स्वीकार किया जा सके.
- उपयोगकर्ता के स्कोप स्वीकार करने के बाद:
- अगर उपयोगकर्ता के पास साथी ऐप्लिकेशन है और उसकी पुष्टि हो चुकी है, तो पॉप-अप बंद करें विंडो.
- अगर ऐसा नहीं है, तो उपयोगकर्ता को पेज पर अचानक दिखने वाले विज्ञापन पर भेजें, जो उन्हें डाउनलोड करने के लिए निर्देश देता हो Google Play Store या iOS स्टोर से डाउनलोड किया गया ऐप्लिकेशन
- ऐप्लिकेशन इंस्टॉल करने और पुष्टि करने के बाद, पॉप-अप विंडो बंद करें
GDK और कोई खाता नहीं
MyGlass में ग्लासवेयर को चालू करना ही इस फ़्लो के लिए ज़रूरी है.
खाते के साथ GDK
- MyGlass में टॉगल करने के बाद, पुष्टि करने वाला यूआरएल एक पॉप-अप में खुलता है.
- अगर उपयोगकर्ता ने पहले से ही आपकी सेवा में साइन इन किया हुआ है, तो उसे पुष्टि करने वाली स्क्रीन.
- अगर उपयोगकर्ता ने साइन इन नहीं किया है, तो साइन इन फ़ील्ड दिखाएं. इसके बाद, उसे ये काम करने की अनुमति दें साइन इन करें और फिर उन्हें पुष्टि वाली स्क्रीन पर भेजें.
- अगर उपयोगकर्ता के पास खाता नहीं है, तो खाता बनाने के लिए लिंक दें.
- उपयोगकर्ता स्कोप स्वीकार करता है.
- GDK खाता डालने के लिए, 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 का उदाहरण
इस उदाहरण में, कॉल करने के लिए 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 पर मौजूद ऑब्जेक्ट, स्टैंडर्ड Android के इस्तेमाल करने के समान हैं
AccountManager
.
अपनी
AndroidManifest.xml
फ़ाइल में इन मेनिफ़ेस्ट अनुमतियों का एलान करें:<uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="android.permission.USE_CREDENTIALS" />
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.
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);