You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用Bitrix24 REST API绑定事件返回WRONG_AUTH_TYPE错误

问题背景
  • 需求为通过Bitrix24 REST API注册OnVoximplantCallInit事件,绑定自定义回调处理器,预期事件对所有普通用户生效,无需管理员权限
  • 实际调用接口时,即便使用持有管理员权限的账号发起请求,仍返回授权类型错误,初步排除账号权限等级导致问题的可能
  • 开发者为Bitrix24开发新手,对平台授权机制不熟悉,查阅官方文档后未定位到问题根因
接口返回错误
Array
(
    [error] => WRONG_AUTH_TYPE
    [error_description] => Current authorization type is denied for this method
)
原有业务代码
<?php
require_once (__DIR__.'/crest.php');


class AuthSimple
{
    const AUTH_TYPE = 'demo_simple';

    const AUTH_PARAM_NAME = 'secret_word';
    const AUTH_PARAM_VALUE = 'MySuperSecurePassword123456';

    public static function onRestCheckAuth(array $query, $scope, &$res)
    {
        if(array_key_exists(static::AUTH_PARAM_NAME, $query))
        {
            $res = array('error' => 'INVALID_CREDENTIALS', 'error_description' => 'Invalid request credentials');

            return false;
        }

        return null;
    }
}

$data = file_get_contents('https://gotmink.bitrix24.com.br/rest/4755/uj3p50inofwg6eqm/');

echo '<PRE>';
$result = CRest::call(
    'event.bind',
    [
        'event' => 'OnVoximplantCallInit',
        'handler' => 'https://testebitrix24.herokuapp.com/handler.php',
        'auth_type' => '4755',
        'event_type' => 'online'
    ]
);
print_r($result);

echo '</PRE>';


?>
错误根因
  • 触发WRONG_AUTH_TYPE的直接原因是event.bind请求中传入的auth_type参数值非法:传入的4755是用户ID,不属于Bitrix24开放平台规定的该接口合法参数取值范围。
  • Bitrix24event.bind接口的auth_type参数仅支持三类合法取值,传入其他任意值都会触发该错误:
    • 0:默认取值,使用当前调用接口的用户授权上下文,事件触发时回调请求携带对应操作发起人的授权令牌
    • 1:使用应用管理员授权上下文,事件触发时回调请求携带应用全局管理员权限令牌
    • 提前通过平台接口注册过的自定义授权类型标识(例如代码中定义的demo_simple),需要配套实现自定义授权校验逻辑才可使用
  • 代码中存在两处冗余无效逻辑:一是拉取REST入口地址的file_get_contents调用结果未被任何逻辑使用,二是自定义的AuthSimple类没有注册到平台授权钩子中,运行时不会实际生效。
修复方案
  1. 根据业务需求替换auth_type的参数值:
    • 要实现“所有普通用户生效、无需管理员权限”的需求,直接将auth_type设为0即可,事件触发时会自动携带当前发起呼叫操作的用户的授权上下文,不需要额外申请管理员权限
    • 如果需要回调请求固定持有管理员权限,将auth_type设为1
    • 如果要使用自定义授权逻辑,需要先通过rest.onRestAddAuthType事件将自定义授权类型注册到平台,再将auth_type设为对应标识(例如demo_simple)
  2. 清理冗余代码:删除未被使用的file_get_contents请求逻辑,未注册的AuthSimple类如果后续不需要使用可一并移除。
  3. 修正后的接口调用代码示例:
$result = CRest::call(
    'event.bind',
    [
        'event' => 'OnVoximplantCallInit',
        'handler' => 'https://testebitrix24.herokuapp.com/handler.php',
        'auth_type' => 0,
        'event_type' => 'online'
    ]
);

内容的提问来源于stack exchange,提问作者LucasAHKB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 22:24:31