开发者社区> 问答> 正文

传递正确的code获取持久授权码无响应



get_persistent_code 如果传递不正确的code,可以得到返回值: {"errcode":40078,"errmsg":"不存在的临时授权码"}
但是如果传递的是正确的code,请求失败。(这个请求没有严格按照文档的步骤进行,按我们的理解, 看不出第3步和其它步骤有什么必然的联系,为了编写程序的方便,我们先进行第3步的调用获取code,再依次执行其它步骤 ,具体如下:


1. 执行第3步: 先在浏览器构造请求,如https  :  //oapi.dingtalk.com/connect/oauth2/sns_authorize?appid=dingoa9gdvyghqocy8n1fl&response_type=code&scope=snsapi_login&state=STATE&redirect_uri=http://114.215.148.161/os/login.html
2. 按顺序执行其它步骤


问题: 根据文档:普通钉钉用户账号开放及免登,列出了7个步骤,这7个步骤必须依次调用吗?



展开
收起
大饼子 2016-05-24 11:54:30 10648 0
5 条回答
写回答
取消 提交回答
  • 回 5楼pollyliu365的帖子
    通过POST请求用户授权的持久授权码(需要使用第二步追加的code和第三步获得的sns_access_token)
            发出的请求:

                {
                    "tmp_auth_code": "c90034e9e40c351f870d4f3ef969e154"        ←该tmp_auth_code即为第二步追加的code
                }
            完整请求地址:
                https ://oapi.dingtalk.com/sns/get_persistent_code?access_token=c8904a4070***********71fb6c04
    2017-09-21 16:59:55
    赞同 展开评论 打赏
  • Re传递正确的code获取持久授权码无响应
    我调用https ://oapi.dingtalk.com/sns/get_persistent_code 这个接口怎么老是报  errcode":40014,"errmsg":"不合法的access_token
    我的code和access_token都获取到了
    2017-07-27 13:40:49
    赞同 展开评论 打赏
  • 超时时间设置了多少?
    2016-05-31 13:01:56
    赞同 展开评论 打赏
  • Re传递正确的code获取持久授权码无响应
    目前的WEB端免登使用以下流程:

    1>    用户在钉钉的页面进行授权,当授权成功后,跳转至我们的页面, 地址后会追加两个参数:code和state
            例:http: //114.215.148.161/os/login.html?fromUrl=dingtalk&code=c90034e9e40c351f870d4f3ef969e154 &state=STATE
            (备注:code只能使用一次)

    3>    通过GET请求获取 sns_access_token:
            所需参数:
                appId:dingoa9gdvyghqocy8n1fl
                appSecret:SaLxM_WLJs***************************nenfY******************
            返回结果:

                {
                    "access_token": "c8904a4070***********71fb6c04",        ←该项即为我们需要的sns_access_token
                    "errcode": 0,
                    "errmsg": "ok"
                }

    4>    通过POST请求用户授权的持久授权码(需要使用第二步追加的code和第三步获得的sns_access_token)
            发出的请求:

                {
                    "tmp_auth_code": "c90034e9e40c351f870d4f3ef969e154"        ←该tmp_auth_code即为第二步追加的code
                }
            完整请求地址:
                https ://oapi.dingtalk.com/sns/get_persistent_code?access_token=c8904a4070***********71fb6c04

            若请求成功,理论上会返回:
                {
                    "errcode": 0,
                    "errmsg": "ok",
                    "openid": "liSii8KCxxxxx",
                    "persistent_code": "dsa-d-asdasdadHIBIinoninINIn-ssdasd",
                    "unionid": "7Huu46kk"
                }

            现在遇到的问题,当我们使用错误的数据进行请求,如错误的code,    会正确提示:{"errcode":40078,"errmsg":"不存在的临时授权码"}
                                        当我们使用错误的sns_access_token,                     会正确提示:{"errcode":40014,"errmsg":"不合法的access_token"}

            而当我们使用正确的数据进行POST请求,钉钉服务器不响应我们,请求会直接超时。
            

    -------------------------

    Re传递正确的code获取持久授权码无响应
    顶起来,请帮我解决
    2016-05-25 09:11:55
    赞同 展开评论 打赏
  • 第三步:使用appid及appSecret访问如下接口,获取accesstoken,此处获取的token有效期为2小时,有效期内重复获取,返回相同值,并自动续期,如果在有效期外获取会获得新的token值,建议定时获取本token,不需要用户登录时再获取
    https://oapi.dingtalk.com/sns/gettoken?appid=APPID&appsecret=APPSECRET

    这个是获取token,用于后面调用接口使用的,这个接口先调通之后才可以进行后面的步骤的
    2016-05-24 21:03:30
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载