মক্কেলের পক্ষে:
auth2
Init ফাংশনটি ব্যবহার করে , আপনি hosted_domain
সাইন ইন পপআপে তালিকাবদ্ধ অ্যাকাউন্টগুলিকে আপনার সাথে মেলে এমনগুলি সীমাবদ্ধ করতে আপনি প্যারামিটারটি পাস করতে পারেন hosted_domain
। আপনি এখানে ডকুমেন্টেশনে এটি দেখতে পারেন: https://developers.google.com/identity/sign-in/web/references
সার্ভার সাইড:
এমনকি একটি সীমাবদ্ধ ক্লায়েন্ট-সাইডের তালিকা সহ আপনাকে যাচাই করতে হবে যা id_token
আপনি নির্দিষ্ট করেছেন এমন হোস্ট করা ডোমেনের সাথে মেলে। কিছু বাস্তবায়নের জন্য এর অর্থ hd
টোকেন যাচাই করার পরে গুগল থেকে প্রাপ্ত বৈশিষ্ট্যটি পরীক্ষা করা ।
সম্পূর্ণ স্ট্যাক উদাহরণ:
ওয়েব কোড:
gapi.load('auth2', function () {
var auth2 = gapi.auth2.init({
client_id: "your-client-id.apps.googleusercontent.com",
hosted_domain: 'your-special-domain.com'
});
auth2.attachClickHandler(yourButtonElement, {});
auth2.currentUser.listen(function (user) {
if (user && user.isSignedIn()) {
validateTokenOnYourServer(user.getAuthResponse().id_token)
.then(function () {
console.log('yay');
})
.catch(function (err) {
auth2.then(function() { auth2.signOut(); });
});
}
});
});
সার্ভার কোড (গুগল নোড.জেএস লাইব্রেরি ব্যবহার করে):
আপনি যদি নোড.জেএস ব্যবহার না করে থাকেন তবে আপনি এখানে অন্যান্য উদাহরণগুলি দেখতে পারেন: https://developers.google.com
const GoogleAuth = require('google-auth-library');
const Auth = new GoogleAuth();
const authData = JSON.parse(fs.readFileSync(your_auth_creds_json_file));
const oauth = new Auth.OAuth2(authData.web.client_id, authData.web.client_secret);
const acceptableISSs = new Set(
['accounts.google.com', 'https://accounts.google.com']
);
const validateToken = (token) => {
return new Promise((resolve, reject) => {
if (!token) {
reject();
}
oauth.verifyIdToken(token, null, (err, ticket) => {
if (err) {
return reject(err);
}
const payload = ticket.getPayload();
const tokenIsOK = payload &&
payload.aud === authData.web.client_id &&
new Date(payload.exp * 1000) > new Date() &&
acceptableISSs.has(payload.iss) &&
payload.hd === 'your-special-domain.com';
return tokenIsOK ? resolve() : reject();
});
});
};