Firebase से पुष्टि करने के लिए, OAuth आइडेंटिटी प्रोवाइडर को प्रोग्राम के हिसाब से कॉन्फ़िगर करें

Google Cloud Identity Platform REST API का इस्तेमाल इन कामों के लिए किया जा सकता है Firebase प्रोजेक्ट के OAuth आइडेंटिटी प्रोवाइडर (आईडीपी) को प्रोग्राम के हिसाब से मैनेज किया जाता है कॉन्फ़िगरेशन. इस एपीआई की मदद से, अपनी पसंद के आइडेंटिटी प्रोवाइडर कॉन्फ़िगर किए जा सकते हैं आपके प्रोजेक्ट के मौजूदा OAuth पर काम करने, उसे अपडेट, चालू, और बंद करने के लिए कॉन्फ़िगरेशन.

अनुमति पाएं

REST API को कॉल करने से पहले, आपको यह अनुमति देने वाले OAuth 2.0 ऐक्सेस टोकन की ज़रूरत होती है आपके Firebase प्रोजेक्ट में एडिटर का ऐक्सेस. उदाहरण के लिए, ऐक्सेस टोकन पाने के लिए Node.js में सेवा खाते का इस्तेमाल करके:

const googleAuth = require('google-auth-library');
const SCOPES = ['https://www.googleapis.com/auth/cloud-platform'];

async function getAccessToken() {
    const serviceAccount = require('/path/to/service_account_key.json');
    const jwtClient = new googleAuth.JWT(
        serviceAccount.client_email,
        null,
        serviceAccount.private_key,
        SCOPES,
        null
    );
    return jwtClient.authorize().then((tokens) => tokens.access_token);
}

OAuth आइडेंटिटी प्रोवाइडर का नया कॉन्फ़िगरेशन जोड़ें

नया OAuth आइडेंटिटी प्रोवाइडर (आईडीपी) कॉन्फ़िगरेशन जोड़ने के लिए, नया पोस्ट करें projects.defaultSupportedIdpConfigs का कॉन्फ़िगरेशन एंडपॉइंट का इस्तेमाल करें.

आपको आइडेंटिटी प्रोवाइडर का आईडी और अपने क्लाइंट आईडी की जानकारी देनी होगी और जो आपको आम तौर पर सेवा देने वाली कंपनी की डेवलपर साइट से मिलता है. यहां Firebase जिन आइडेंटिटी प्रोवाइडर के साथ काम करता है और उनके आईडी:

सेवा देने वाली कंपनी आईडीपी (IdP) आईडी
Apple apple.com
Apple गेम सेंटर gc.apple.com
Facebook facebook.com
GitHub github.com
Google google.com
Google Play Games playgames.google.com
LinkedIn linkedin.com
Microsoft microsoft.com
Twitter twitter.com
Yahoo yahoo.com

उदाहरण के लिए, Node.js का इस्तेमाल:

const fetch = require('node-fetch');
const GCIP_API_BASE = 'https://identitytoolkit.googleapis.com/v2';

async function addIdpConfig(projectId, accessToken, idpId, clientId, clientSecret) {
    const uri = `${GCIP_API_BASE}/projects/${projectId}/defaultSupportedIdpConfigs?idpId=${idpId}`;
    const options = {
        method: 'POST',
        headers: {
            'Authorization': `Bearer ${accessToken}`
        },
        body: JSON.stringify({
            name: `projects/${projectId}/defaultSupportedIdpConfigs/${idpId}`,
            enabled: true,
            clientId: clientId,
            clientSecret: clientSecret,
        }),
    };
    return fetch(uri, options).then((response) => {
        if (response.ok) {
            return response.json();
        } else if (response.status == 409) {
            throw new Error('IdP configuration already exists. Update it instead.');
        } else {
            throw new Error('Server error.');
        }
    });
}

(async () => {
    const projectId = 'your-firebase-project-id';
    const accessToken = await getAccessToken();
    const idpId = 'facebook.com';
    const clientId = 'your-facebook-client-id';
    const clientSecret = 'your-facebook-client-secret';
    try {
        await addIdpConfig(projectId, accessToken, idpId, clientId, clientSecret);
    } catch (err) {
        console.error(err.message);
    }
})().catch(console.error);

अगर कॉल पूरा होता है, तो यह नया कॉन्फ़िगरेशन दिखाता है. उदाहरण के लिए:

{
  name: 'projects/your-numerical-project-id/defaultSupportedIdpConfigs/facebook.com',
  enabled: true,
  clientId: 'your-facebook-client-id',
  clientSecret: 'your-facebook-client-secret'
}

अगर किसी ऐसे आइडेंटिटी प्रोवाइडर को कॉन्फ़िगर करने की कोशिश की जाती है जिसे पहले ही कॉन्फ़िगर किया जा चुका है आपके प्रोजेक्ट के लिए, कॉल एचटीटीपी गड़बड़ी 409 दिखाता है. इस स्थिति में, आपके पास ये विकल्प हैं इसके बजाय, कॉन्फ़िगरेशन को अपडेट करें.

OAuth आइडेंटिटी प्रोवाइडर कॉन्फ़िगरेशन को अपडेट करना

OAuth आइडेंटिटी प्रोवाइडर को चालू या बंद करने या अपने प्रोजेक्ट के क्लाइंट को अपडेट करने के लिए . projects.defaultSupportedIdpConfigs एंडपॉइंट के लिए अनुरोध भेजा जाएगा. इसके बाद, कॉन्फ़िगरेशन में अपने हिसाब से बदलाव करें और नए को पैच करें projects.defaultSupportedIdpConfigs का कॉन्फ़िगरेशन एंडपॉइंट का इस्तेमाल करें.

उदाहरण के लिए, Node.js का इस्तेमाल:

async function getIdpCfg(projectId, accessToken, idpId) {
    const uri = `${GCIP_API_BASE}/projects/${projectId}/defaultSupportedIdpConfigs/${idpId}`;
    const options = {
        method: 'GET',
        headers: {
            'Authorization': `Bearer ${accessToken}`
        },
    };
    return fetch(uri, options).then((response) => {
        if (response.ok) {
            return response.json();
        } else if (response.status == 404) {
            throw new Error('IdP configuration not found. First add the IdP'
                            + ' configuration to your project.');
        } else {
            throw new Error('Server error.');
        }
    });
}

async function updateIdpConfig(accessToken, idpCfg) {
    const uri = `${GCIP_API_BASE}/${idpCfg.name}`;
    const options = {
        method: 'PATCH',
        headers: {
            'Authorization': `Bearer ${accessToken}`
        },
        body: JSON.stringify(idpCfg),
    };
    return fetch(uri, options).then((response) => {
        if (response.ok) {
            return response.json();
        } else if (response.status == 404) {
            throw new Error('IdP configuration not found. First add the IdP'
                            + ' configuration to your project.');
        } else {
            throw new Error('Server error.');
        }
    });
}

(async () => {
    const projectId = 'your-firebase-project-id';
    const accessToken = await getAccessToken();
    const idpId = 'facebook.com';
    try {
        // Get the IdP's current configuration.
        const idpCfg = await getIdpCfg(projectId, accessToken, idpId);

        // Update the configuration. (For example, disable the IdP.)
        idpCfg.enabled = false;
        await updateIdpConfig(accessToken, idpCfg);
    } catch (err) {
        console.error(err.message);
    }
})().catch(console.error);

अगर किसी आइडेंटिटी प्रोवाइडर के कॉन्फ़िगरेशन को अपडेट करने की कोशिश की जाती है, तो आपने आपके प्रोजेक्ट के लिए कॉन्फ़िगर किया गया है, तो इन कॉल के नतीजे में एचटीटीपी गड़बड़ी 404 दिखेगी. इसके बजाय, नए आइडेंटिटी प्रोवाइडर को कॉन्फ़िगर करें, जैसा कि पिछले सेक्शन में दिया गया है.