当前位置: 首页 > 后端技术 > PHP

钉钉获取免登录授权码CODE,返回:不存在的临时授权码40078

时间:2023-03-30 05:25:04 PHP

最近在踩基于钉钉开放平台的开发坑,然后遇到“钉钉获取免登录授权码“执行身份认证CODE时,返回:不存在的临时授权码40078”的坑,上网搜索了一下,发现关于这个问题描述的资料非常少,也没有看到相应的解决方案。摸索之后,总结一下我的经验,希望对大家有所帮助1、钉钉开放平台身份验证说明身份验证“免登录”是指用户进入应用后,应用可以自动获取当前用户身份并登录无需输入钉钉用户名密码即可进入系统https://ding-doc.dingtalk.com/doc#/serverapi2/vt6khw1.1企业应用免费注册当你在为自己的企业/代表企业开发新的“企业应用”,或者将企业内部的钉钉遗留系统接入钉钉形成“企业微应用”后,当企业员工使用钉钉企业微应用,直接点击应用,无需输入账号密码,即可自动登录您开发的系统。1.2.应用管理后台免登录当您开发了一个企业或ISV微应用后,需要企业管理员在oa.dingtalk.com对微应用进行一些设置和管理功能,您需要开发一个后台管理系统为申请。在oa.dingtalk.com,管理员只需直接点击微应用管理后台,无需输入账号密码即可自动登录您的应用管理后台系统。1.3.扫码登录第三方网站当您开发了独立网站,希望用户使用钉钉账号登录您的网站时,您可以使用钉钉扫码实现免密码登录本网站。请注意,本网站不是钉钉客户端使用的企业/ISV应用。1.4.钉钉不登录第三方网站当您开发的H5网站在钉钉客户端打开时,用户只需直接点击H5链接即可实现自动登录流程,无需输入钉钉账号密码。请注意,本网站并非钉钉客户端使用的企业应用/第三方企业应用。1.5.独立第三方网站密码登录当你开发独立网站,想用钉钉账号登录你的网站时,可以显示钉钉提供的登录URL页面,用户输入钉钉账号密码即可实现。登录您的网站的过程。请注意,本网站并非钉钉客户端使用的企业应用/第三方应用。2、钉钉对“临时授权码不存在”问题的描述当您用临时授权码(tmp_auth_code)和suitetoken(suite_access_token)交换永久授权码(permanent_code)时,需要保证suite_access_token和tmp_auth_code还没有过期。https://g.alicdn.com/dingding/opendoc/docs/_faq/tab0.html?t=1467363847934#q-%E4%B8%8D%E5%AD%98%E5%9C%A8%E7%9A%84%E4%B8%B4%E6%97%B6%E6%8E%88%E6%9D%83%E7%A0%813,解决方案其实如果你关注上面两个文件,你已经发现问题出现在哪儿,其实可以从两个方面找原因:一是access_token是否过期,二是code是否正确。3.1.告诉我我的错误。我用的是企业内部应用的免费登录界面。其实就是三步,1:获取临时码;2:获取access_token;3:使用code和access_token获取用户免费登录信息。https://ding-doc.dingtalk.com/doc#/serverapi2/clotub查看了access_token,发现access_token可以正常获取,所以问题很有可能出在代码的获取上。再次研究文档,发现自己犯了一个很低级的错误,就是在钉钉中使用第三方网站的接口获取代码,然后使用企业内部应用的接口获取代码用户的登录信息,所以解决方案是使用企业内部应用获取用户登录信息的接口获取代码,然后使用企业内部应用免费登录接口获取用户的登录信息。至此,我的问题已经解决。其实是一个很低级的错误。如果仔细阅读官方文档,完全可以避免这种情况。