连接eClinical Works FHIR Sandbox时遇无效客户端错误求解决步骤
我之前也碰到过完全一样的问题,按下面的步骤操作后成功连接:
核对客户端注册信息的一致性
登录eClinical Works开发者后台,检查你代码里用到的客户端ID、客户端密钥是否和后台注册的完全一致——注意大小写、特殊字符,别复制时多了首尾空格。另外,回调URL必须和注册时填写的丝毫不差,包括http/https协议、端口号,哪怕是本地测试用的http://localhost:3000/callback也不能改一个字符。使用沙箱专属的授权端点
别误用生产环境或文档里过时的端点,当前沙箱有效的授权端点是:
授权码流程:https://sandbox.eclinicalworks.com/auth/oauth2/authorize
Token获取:https://sandbox.eclinicalworks.com/auth/oauth2/token
确保请求时严格使用这两个地址,别搞混环境。按要求提交Token请求参数
获取Token时必须用application/x-www-form-urlencoded格式提交参数,不能用JSON。示例curl请求:curl -X POST \ https://sandbox.eclinicalworks.com/auth/oauth2/token \ -H 'Content-Type: application/x-www-form-urlencoded' \ -d 'grant_type=authorization_code&code=你的授权码&redirect_uri=你的回调URL&client_id=你的客户端ID&client_secret=你的客户端密钥'注意
client_id和client_secret要放在表单参数里,不需要用Basic Auth方式提交。检查客户端权限范围
注册客户端时必须勾选FHIR相关的权限,比如patient/*.read、user/*.read,至少要选择一个可访问的资源范围,否则也会返回和无效客户端相关的错误。确认沙箱环境状态
有时候沙箱会临时维护,先去开发者后台的状态页面查看是否正常,如果处于维护状态,等恢复后再尝试连接。
如果还是报错,去开发者后台的日志页面查看具体错误详情,里面会给出更明确的提示——比如是回调URL不匹配、密钥错误还是权限不足。
内容的提问来源于stack exchange,提问作者cdtdetecz09

