如何访问 Netlify 上的登录用户名?

How can I access the logged in user name on Netlify?

我无法理解如何在 Netlify 上处理 函数。特别是,我想在用户登录时访问用户的 ID。

我在 my netlify site 上启用了身份,我可以登录和注销。

<button data-netlify-identity-button id="login"></button>

我创建了一个函数 identity-login,我认为应该处理用户的详细信息,但我看不到如何在网页上使用它

// functions/identity-login.js

exports.handler = async function (event, context) {
    const { identity, user } = context.clientContext;
    console.log(identity, user)
return {
    statusCode: 200,
    body: 'hello'
    }
};

函数端点是

https://silly-parrot.netlify.app/.netlify/functions/identity-login

我页面的脚本中有这个,但我不知道如何调用它或者它是否正确

        async function apiCall() {
            const url = `/.netlify/functions/identity-login`;
            try {
                const response = await fetch(url);
                const data = await response;
                console.log(data)
                return data;
            } catch (err) {
                console.log(err);
            }
        }

我该怎么办?

我现在意识到我采取了错误的方法。没有必要使用 Netlify identity-login 事件。 netlifyIdentity 对象提供必要的功能来识别用户何时登录或注销,以及在页面加载(初始化)时发现用户是否登录。用户身份包含在 user.token.access_token

以下代码在我的主要 js 脚本中(您当然需要访问 netlifyIdentity 对象)

    <script type="text/javascript" src="https://identity.netlify.com/v1/netlify-identity-widget.js"></script>

然后设置异步函数来处理授权事件

<script>
    var token = '';
    var logged_in = false;

    async function started() {
        logged_in = false;
        netlifyIdentity.on('init', async user => {
            if(user) {
                token = user.token.access_token;
                logged_in = true;
            }
            console.log('init', logged_in, token);
        })

        netlifyIdentity.on('login', user => {
            if(user) {
                logged_in = true;
                token = user.token.access_token;
            }
            console.log('log in', logged_in, token);
        })

        netlifyIdentity.on('logout', () => {
            token = '';
            logged_in = false;
            console.log('log out', logged_in, token);
        })
    }
    started()
</script>