【问题标题】:Xero PHP API Error: "You are not permitted to access this resource"Xero PHP API 错误:“您无权访问此资源”
【发布时间】:2020-08-13 13:17:12
【问题描述】:

我有 Xero API 设置和 OAuth 流程工作。我已将“Demo Company UK”关联为租户(组织),并已授予我的用户顾问 • 联系银行帐户管理员、工资单管理员 • 费用(管理员)权限(似乎是最高级别)位于此处:@ 987654321@ 但我仍然收到以下错误。 “您无权访问此资源”我添加了所有应涵盖请求并具有有效 访问令牌 的 范围,但仍然没有好处。

'client_id'     => env('XERO_CLIENT_ID'),
'client_secret' => env('XERO_CLIENT_SECRET'),
'redirect_uri'  => env('XERO_REDIRECT_URI'),
'scope'         => 'openid email profile offline_access accounting.transactions accounting.contacts accounting.contacts.read accounting.reports.read',

进行基本调用以获取帐户内用户的示例函数。与 Xero 的连接很好,但只要我尝试请求任何数据,就会引发相同的错误。

public function testXero() {
        $xeroAccessToken = GlobalSetting::where('name', '=', 'xero_access_token')->first();
        $xeroTenantOrganisation = GlobalSetting::where('name', '=', 'xero_tenant_organisation_id')->first();

        $xero = new XeroApp(
            new AccessToken(
                array(
                    'access_token' => json_decode($xeroAccessToken->value)->id_token
                )
            ), $xeroTenantOrganisation->value
        );
        //dd( $xero ); //we have a succesfull connection here...
        
        # Retrieve all contacts
        $contacts = $xero->contacts()->get();                               

        dd($contacts); //error "You are not permitted to access this resource".
 }

有人遇到过这个问题吗?

【问题讨论】:

    标签: php xero-api


    【解决方案1】:

    问题是我在创建new XeroApp 类实例时传递了id_token。我没有看到存储在数据库中的 JSON 对象中的所有其他对象(非常大)。有一个实际的 access_token 与我在通话中提供的一些其他有用信息一起存储。

    $xero = new XeroApp(
        new AccessToken(
            array(
                'access_token' => json_decode($xeroAccessToken->value)->access_token,
                'refresh_token' => json_decode($xeroAccessToken->value)->refresh_token,
                'expires' => json_decode($xeroAccessToken->value)->expires,
            )
        ), $xeroTenantOrganisation->value
    );
    
    $contacts = $xero->contacts;
    
    dd($contacts);//RESULTS!!! YES
    

    我会保持这个帖子打开,以防它帮助任何人。

    【讨论】:

      【解决方案2】:

      Nick 很高兴 - 是的,id_token 可用于“使用 Xero 注册” 之类的事情,如果您的业务运营是财务数据的核心,这将是一个巨大的优势。

      https://developer.xero.com/documentation/oauth2/sign-up

      它本质上使您能够在系统中配置帐户(使用解码的 ID 令牌名称/电子邮件)并在单个流中同步其 Xero 数据。我们已经看到合作伙伴因此显着减少了新注册用户的流失率。


      综上所述,有效的access_token 和tenant_id 是您进行授权 API 调用所需的东西。

      【讨论】:

      • 感谢您在这里提供的额外信息,我最初只是认为这只是 API 为 access_token 赋予了不同的名称,我过去曾在其他 API 中看到过。
      猜你喜欢
      • 1970-01-01
      • 2020-07-05
      • 1970-01-01
      • 2020-05-07
      • 1970-01-01
      • 2021-07-03
      • 2022-08-02
      • 1970-01-01
      • 2021-02-15
      相关资源
      最近更新 更多