Laravel auth0用户搜索返回完整列表

时间:2018-01-28 16:10:07

标签: php laravel auth0

我有以下代码:

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

重点是返回具有给定id

的单个用户

但是,每当我打电话给我时,我都会得到我的用户的完整列表。

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

1 个答案:

答案 0 :(得分: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端点上的api/v2/users参数,并且您的请求正在执行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的文档。