开发者社区 问答 正文

单文件实现读取accessToken和ticket

var https = require( "   ");//论坛设置不允许新人贴url
var querystring = require( 'querystring');
var events = require( 'events');

const OAPI_HOST = '开放平台网址';//论坛设置不允许新人贴url
const corpId = '你的corpID';
const secret = ‘你的corpSecret’;

var emitter = new events.EventEmitter();

function invoke(path, params) {
         https. get( OAPI_HOST + path + '?' + querystring.stringify(params), function(res) {
             if (res.statusCode === 200) {
                 var body = '';
                res. on( 'data', function (data) {
                     body += data;
                }). on( 'end', function () {
                     var result = JSON. parse( body);
                     if ( result && 0 === result.errcode) {
                         console. log( result);
                         if( result. access_token){
                             emitter. emit( 'atDone', result. access_token);
                        }
                         else{
                             if( result.ticket){
                                 emitter. emit( 'tkDone', result.ticket);
                            }
                        }
                    }
                     else {
                         console. log( result);
                    }
                });
            }
        })
}

invoke( '/gettoken', { corpid: corpId, corpsecret: secret});

emitter. on( 'atDone', function(accessTicket) {
     var ticket =   invoke( '/get_jsapi_ticket', { type: 'jsapi', access_token: accessTicket});
});
emitter. on( 'tkDone', function(ticket) {
     console. log( 'ticket rcvd');
});

求指导如何优雅的使用 [font=SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace]yield

展开
收起
elecfans 2017-08-01 19:18:55 2377 分享 版权
阿里云 AI 助理回答

根据您的代码片段,您正尝试使用Node.js通过HTTPS向阿里云开放平台发起请求。为了帮助您完成这个操作并处理响应,我将提供一个结构化的解决方案,参考了知识库中关于HTTPS请求的示例。

问题描述

您需要通过HTTPS发送GET请求到阿里云开放平台,并正确处理响应数据。

解决步骤

  1. 构造请求URL和参数

    • 确保OAPI_HOSTcorpIdsecret已正确设置。
    • 使用querystring模块构建查询字符串。
  2. 发起HTTPS GET请求

    • 使用https.get方法发起请求,传入正确的URL(包括路径和查询字符串)。
  3. 处理响应

    • data事件处理器中累积响应体数据。
    • end事件处理器中解析JSON响应并根据结果执行相应逻辑。

代码示例

var https = require('https');
var querystring = require('querystring');
var events = require('events');

const OAPI_HOST = '开放平台网址'; // 请替换为实际的开放平台地址
const corpId = '你的corpID';
const secret = '你的corpSecret';

var emitter = new events.EventEmitter();

function invoke(path, params) {
    var urlPath = path + '?' + querystring.stringify(params);
    https.get(OAPI_HOST + urlPath, function(res) {
        if (res.statusCode === 200) {
            var body = '';
            res.on('data', function(data) {
                body += data;
            }).on('end', function() {
                var result = JSON.parse(body);
                // 根据result进行后续处理
                if (result.errcode === 0) {
                    console.log('请求成功,返回数据:', result);
                } else {
                    console.error('请求失败,错误码:', result.errcode, ',错误信息:', result.errmsg);
                }
            });
        } else {
            console.error('请求失败,HTTP状态码:', res.statusCode);
        }
    }).on('error', function(e) {
        console.error('请求遇到问题:', e.message);
    });
}

// 示例调用
invoke('/gettoken', { corpid: corpId, corpsecret: secret });

注意事项

  • 确保OAPI_HOST包含协议(https://)和正确的域名。
  • 检查corpIdsecret是否与阿里云开放平台账户匹配。
  • 处理网络错误和其他非200状态码的响应,以提高程序健壮性。
  • 上述代码未直接引用知识库中的示例,但遵循了类似的逻辑结构来解决您的问题。

请按照上述代码调整并测试您的请求。如果遇到特定错误或有进一步需求,请提供详细信息以便获得更精确的帮助。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答分类:
问答地址: