【问题标题】:Laravel auth0 users search returns full listLaravel auth0 用户搜索返回完整列表
【发布时间】:2018-07-07 09:20:33
【问题描述】:

我有以下代码:

$auth0Api = new Management(env('AuthToken'), env('Auth0Domain'));    
$user = $auth0Api->users->search([ "user_id" => "google-oauth2|103122844576645532487"]);

这样做的目的是返回具有给定id 的单个用户

但是,每当我调用它时,我都会得到我的用户的完整列表。

谁能告诉我我做错了什么?

【问题讨论】:

    标签: php laravel auth0


    【解决方案1】:

    根据documentation for Auth0 search,他们使用Lucene Query Syntax,这意味着google-oauth2 user with the id of 103122844576645532487 的Auth0 搜索查询应如下所示:

    identities.provider:"google-oauth2" AND user_id:"103122844576645532487"
    

    您使用的 PHP SDK 根据通过 withParam 方法提供的键/值在后台为您组装对 API 的请求。您正在使用的search 方法获取您的参数(['user_id' => '...'])并将它们传递给withParam,然后执行您的请求。

    您的 search([...]) 代码正在转换为以下 API 请求:

    /api/v2/users?user_id="google-oauth2|10312284457664553248"
    

    但是,API 不支持 user_id 端点上的 user_id 参数,并且您的请求将作为 api/v2/users 执行,这是返回所有用户的请求。这就是您接收所有用户的原因:您没有(正确地)传递搜索查询。

    您需要在构建搜索时特别包含q(查询)参数,并且该参数应等于有效的 Lucene 查询。

    $auth0Api->users->search([
        'q' => 'identities.provider:"google-oauth2" AND user_id:"103122844576645532487"'
    ]);
    

    这将搜索身份提供者为 google-oauth2 且 user_id 为 103122844576645532487 的用户。

    您可以阅读the api/v2/users method here 的文档。

    【讨论】:

    • 附注不属于此答案,但我想说明一点:我很困惑他们的 SDK 以这种方式运行。他们公开了一个构建搜索查询的search 方法。这是糟糕的设计,难怪会导致混乱。
    猜你喜欢
    • 2020-07-28
    • 1970-01-01
    • 1970-01-01
    • 2020-06-27
    • 2012-01-07
    • 1970-01-01
    • 2018-01-11
    • 2023-03-14
    • 2015-11-24
    相关资源
    最近更新 更多