工具类之appSecret、timeStamp、nonce三个参数进行字典排序后SHA1加密,得到signature。

DES加密和解密工具(亲测可用) 可以指定不同的密钥进行加密操作,增强加密性能。加密和解密代码如下: package com.ywx.test.security; import java.security.Key; import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; /** * DES加密和解密工具,可以对字符串进行加密和解密操作. */ public class Test1 { /** 字符串默认键值 */ privat... 阅读详情

首先摆上工具类。

 public class SortAndEncryptUtils {
    public static String sortAndEncrypt(String appSecret, String timestamp, String nonce) {
        ArrayList<String> list = new ArrayList<String>();
        list.add(appSecret);
        list.add(timestamp);
        list.add(nonce);
        Collections.sort(list);
        return DigestUtils.shaHex(list.get(0) + list.get(1) + list.get(2));
    }
} 






再提供上DigestUtils的jar包:免费下载通道

摆上一段用法 :
String appSecret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx";  //appSecret
String timestamp = String.valueOf(System.currentTimeMillis() / 1000); //获取系统时间的10位时间戳
String nonce = ""; //随机数
//得到一个三位的随机数
for (int i = 0; i < 3; i++) { nonce += String.valueOf((int) (Math.random() * 10)); }
//得到字典排序并且SHA1加密后的signature。
String signature = SortAndEncryptUtils.sortAndEncrypt(appSecret, timestamp, nonce); 




如有问题请多指正,您的指正使我更正确的前行.




使用Jmeter对SHA1加密接口进行性能测试 1、首先了解原理,就是需要对如下三个参数进行SHA1加密,(AppSecret + Nonce + CurTime),三个参数拼接的字符串,进行SHA1哈希计算,转化成16进制字符(String,小写) 2、CheckSum有效期:出于安全性考虑,每个checkSum的有效期为5分钟(用CurTime计算),建议每次请求都生成新的checkSum,同时请确认发起请求的服务器是与标准时间同步的,比如有NTP服务。 ... 阅读详情

相关推荐

PowerWeChat安全机制解析:AES加密与签名验证实战指南

在API安全通信中,加密与签名验证是保障数据保密性、完整性和身份认证的核心技术。AES(高级加密标准)作为一种对称加密算法,通过CBC模式与PKCS#7填充机制,有效防止数据被窃听和篡改。结合SHA1哈希算法实现的签名验证,则确保了请求来源的合法性与消息的完整性。这套技术组合在微信生态等企业级应用开发中具有重要价值,能够应对公网传输中的数据安全挑战。本文以PowerWeChat框架为例,深入剖析其安全机制的设计原理与实现细节,涵盖AES加密、签名验证等关键环节,为开发者提供从原理到实践的完整解决方案。

weixin_34301132的博客 634

第三方调用时 Nonce TimeStamp Signature 这三个参数有什么用?

第三方调用时 Nonce TimeStamp Signature 这三个参数有什么用?

asfasfasgjkl的博客 2082

2011年国产OAuth 1.0a统一认证实践手记

OAuth是一种开放授权协议,用于第三方应用安全地获取用户资源访问权限;其核心原理包括请求令牌、用户授权和访问令牌三步握手,依赖nonce防重放、timestamp时效性与HMAC-SHA1签名保障通信完整性。该技术虽已被OAuth 2.0/ OIDC逐步替代,但在国产早期SaaS平台、政务系统及文档不全的类OAuth体系中仍有大量遗留适配需求。本文聚焦OAuth 1.0a在新浪、腾讯、网易微博等典型国产场景下的落地挑战,涵盖签名算法URL编码嵌套、回调地址校验、跨平台参数差异抽象等工程细节,为现代开发者逆

clugcpne10995的博客 401

c#微信公众号开发一----基本设置,服务器配置token验证,获取timestamp/nonce/signature

一、c#微信公众号开发----基本设置 参考微信官方文档 https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Access_Overview.html 开发→基本配置 公众号开发信息 注:1.记录好开发者密码,会在程序中验证过程中使用到。 2.通过appid和appsecret调用access_token时,至有在ip白名单的ip才能成功调用。 服务器配置 若此处开启服务器配置,设置的自动回复和自...

qq_35382207的博客 1408

逆向破解FastMoss TikTok接口签名加密:Python实战与Web逆向思路

在Web开发与数据采集领域,API接口签名验证是保障数据传输安全与防止滥用的核心机制。其基本原理是客户端与服务器约定一套加密算法,对请求参数、时间戳等信息进行哈希运算,生成唯一的签名串,服务器通过验签确保请求的合法性与完整性。这项技术的核心价值在于,在不暴露敏感密钥的前提下实现身份认证与防篡改,广泛应用于开放平台、数据服务商的风控体系中。典型的应用场景包括社交媒体数据聚合、电商价格监控、金融行情采集等自动化业务流程。本文以FastMoss平台的TikTok数据接口为例,深入剖析其签名加密的逆向工程实战。通过

weixin_34343000的博客 399

JS逆向实战:解析增值税发票查验平台加密签名与Python算法移植

在Web安全与数据交互领域,前端加密是保障接口安全、防止恶意请求的核心机制。其原理在于通过JavaScript对请求参数进行编码、哈希或加密运算,生成唯一的签名或令牌,服务器端通过验证签名确保请求的合法性与完整性。这项技术的工程价值在于实现自动化数据采集、系统集成与业务流程优化,广泛应用于金融对账、电商比价、数据监控等场景。本文聚焦于增值税发票查验场景,深入剖析了关键加密参数(如signature)的生成逻辑,并详细演示了如何将CryptoJS实现的MD5签名算法完整移植到Python环境,解决了编码差异、

weixin_30723433的博客 389

Android开发规范

API接口规范 API接口安全设计规范 App的数据来源就是API接口,所以API接口堆APP的重要性不言而语。设计API接口需要考虑的就是安全机制。 防篡改 防篡改就是防止请求的URL参数值发送至服务器的时候被改动。 普通的API接口格式是xxx.html&key1=xx?key2=xx。我们采用sign签名的发送保证数据传输的正确性。 App一般会在公司的后台申请一个appKey和appSecret,这两个是一一对应的。appKey会作为一个参数写在URL中,然后再发送至服务器。appSec

qq_36828822的博客 3344

美团小程序mtgsig 1.2签名机制逆向分析与安全设计实践

API签名是现代Web和移动应用安全架构中的核心组件,用于确保请求的完整性和身份真实性。其基本原理是通过对请求参数、时间戳、随机数等因子进行加密散列计算,生成唯一的签名字符串,实现防篡改、防重放和身份绑定的目标。在技术价值上,稳健的签名机制是抵御自动化爬虫、数据篡改和业务欺诈攻击的第一道防线,对于保护平台数据和业务逻辑至关重要。典型的应用场景包括电商交易、即时通讯、金融支付等高安全要求领域,尤其是在高并发、低延迟的业务中,签名算法的效率与安全性平衡成为关键挑战。本文以美团小程序生态中的mtgsig参数为例,

weixin_34343308的博客 438

微信公众号开发之微信服务器:消息来源确认

微信公众号在用户配置好服务器URL后会发送GET请求调用该地址,用户需要根据传递的参数完成服务器认证,确认请求来自微信后台,本文将讲解如何完成服务认证。例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

qq_31104067的博客 698

SAP PP模块MRP控制参数实战指南:从NETCH到NEUPL的深度解析

本文深入解析SAP PP模块中MRP控制参数的配置与应用,涵盖NETCH、NETPL和NEUPL三种运行模式的优化策略。通过实战案例和参数对比,帮助用户提升物料需求计划的效率和准确性,优化库存周转率和生产交付能力。

weixin_28419039的博客 244

从零到一:QT for OpenHarmony 开发环境实战搭建与踩坑指南

本文是一份详尽的QT for OpenHarmony开发环境搭建实战指南。文章手把手教你如何在Windows和macOS系统上,从环境准备、核心工具(DevEco Studio与社区版QT SDK)安装配置,到创建首个QT Quick项目、解决构建部署中的常见问题,最终实现应用在OpenHarmony设备上运行。内容涵盖关键配置修改、资源管理及深度踩坑经验,旨在帮助开发者高效开启跨平台开发之旅。

weixin_29190573的博客 325

accsstoken设计_微信access_token设计的原理解析

微信access_token设计的原理解析1、access_token是加密的字符串,其目的是为了接口安全考虑,不然随便就能调用微信服务器的接口会有很大风险。2、用户在公众号中填写的Token就相当于本项目中的xiaoming,是签名验证中的一个参数,来保证签名的安全。3、EncodingAESKey由开发者手动填写或随机生成,将用作消息体加解密密钥。4、signature:微信加密签名,sign...

weixin_34122028的博客 649

【重启后nvidia-smi 命令出现错误】

NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.

qq_44769377的博客 5211

access_token 分析

微信信的access_token 分析  保留 512 个字符空间access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。正常情况下access_token有效期为7200秒,重复获取将导致上次获取的access_token失效。公众号可以使用AppID和AppSecret调用本接口来获取access_token。AppID和AppSecret可在开发模...

fwk19840301的博客 7322

ERA5数据驱动WRFV4.4实战:单层嵌套配置与关键报错排查指南

本文详细介绍了使用ERA5再分析数据驱动WRFV4.4模式进行单层嵌套模拟的完整实战流程。内容涵盖从数据精准下载、WPS前处理配置、WRF核心参数设置到高频报错的深度排查与解决方案,旨在帮助初学者在有限服务器资源下,高效完成WRF模拟并规避常见陷阱。

q5r6s7的博客 770

工作中SVN的使用,保姆级教程!

SVN是一款集中式版本控制系统,采用客户端-服务器模式管理代码版本。与Git相比,SVN在目录权限控制、大型二进制文件处理等方面具有优势,适合特定场景使用。本文介绍了SVN的安装方法、基本操作(检出、提交、更新、回滚等)以及分支管理(创建、合并、切换)。同时讲解了文件冲突的解决方法,并演示了如何在IDEA中集成SVN工具。SVN虽然逐渐被Git取代,但在某些特定场景下仍是可靠选择,工具选择应基于团队和项目需求。

胜人者有力,自胜者强! 1851

微信开发前接入和获取access_token

微信接入 1.时间戳(timestamp),随机数(nonce),token 进行字典序排序 2.将三个参数字符串拼接成一个字符串进行sha1加密 3.开发者获得加密后的字符串可与signature对比 4.对比成功就echo $_GET['echoStr'];...

chundilun5922的博客 150

AirSim安装和地图加载

详细教程如何安装AirSim并加载地图

fegxg的博客 3033

新浪粉丝服务平台教程一:接口验证

由于微信等公众平台的火热,不甘寂寞的新浪微博也推出了类似的新浪粉丝服务平台,通过开放的接口,帮助微博认证帐号在自身服务中为主动订阅他的粉丝提供更精彩、更个性化的内容和更有趣的互动服务。首批开放的有蓝V用及部分个人黄V用户。随着微博支付的上线,新浪粉丝服务平台大有作为。官方文档在http://open.weibo.com/wiki/%E7%B2%89%E4%B8%9D%E6%9C%8D%E5%8A%

业余爱好者易伟的专栏 1617

深度解析:企业AI效能度量框架的核心指标与落地路径,收藏级干货

资源成本:GPU利用率从31%提升到75%,云费用减少了50万元/年;工程效率:模型迭代周期从2周缩短到3天,部署成功率从70%提升到95%;模型性能:CTR从8%提升到12%,CVR从3%提升到4.5%;业务价值:增量收入达200万元/月,ROI达180%;伦理风险:推荐结果的差异影响比从0.7提升到0.9,用户投诉率下降了30%。现在,当CEO再问「AI项目值多少钱?

AI天才研究院 1807

汇川H5U模拟量输出模拟量转换FC: S_RTI

汇川H5U模拟量输入模拟量转换 FC S_ITR_RXXW_Dor的博客-优快云博客接口中的临时变量,如果优化的可以省去一些,感兴趣的可以自行编写修改下,这里不在举例。至此模拟量输入转换FC编写完成。

RXXW_Dor的博客 6678

深入解析SHA256与Base64在签名验证中的原理与应用

在API安全、第三方登录和支付回调等场景中,签名验证是保障数据完整性与请求合法性的核心技术。其核心原理是通过散列算法(如SHA256)为数据生成唯一的“数字指纹”,再通过Base64编码将其转换为便于网络传输的文本格式,最终通过比对签名来验证请求来源与数据完整性。SHA256作为目前广泛采用的安全散列算法,具有抗碰撞性强、单向性等特性,能有效防止数据篡改;而Base64编码则解决了二进制哈希值在文本协议中传输的兼容性问题。这种技术组合在OAuth2.0、开放平台接口等场景中至关重要,例如在JustAuth等

weixin_33796177的博客 431

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

微信access_token设计的原理解析

微信access_token设计的原理解析1、access_token是加密的字符串,其目的是为了接口安全考虑,不然随便就能调用微信服务器的接口会有很大风险。 2、用户在公众号中填写的Token就相当于本项目中的xiaoming,是签名验证中的一个参数,来保证签名的安全 3、EncodingAESKey由开发者手动填写或随机生成,将用作消息体加解密密钥 4、signature:微信加密签名,s

空白_回忆的博客 7947

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

云之家数据推送实战:WebSocket实时通信与密钥安全详解

数据推送是现代企业应用集成的核心技术,它实现了业务系统与前端应用之间的实时数据同步。其原理主要基于客户端轮询、服务端长轮询和WebSocket全双工通信三种模式,其中WebSocket凭借其低延迟、高效率和双向通信能力,成为实时推送场景的首选。这项技术的核心价值在于打通信息孤岛,提升协同效率,广泛应用于移动办公、即时通讯、物联网监控和金融交易等场景。在具体实践中,安全可靠的密钥管理体系是保障推送服务稳定运行的基础,涉及AppKey/AppSecret、Access Token和EncodingAESKey等

aqc802886的博客 288

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

微信公众号开发入门:四步搭建服务器通信与消息处理核心流程

在Web开发与API集成领域,服务器通信是构建交互式应用的基础。其核心原理在于通过HTTP/HTTPS协议,在客户端与服务器之间建立安全、可靠的数据交换通道,涉及请求验证、消息解析与响应处理等关键技术环节。这一机制的技术价值在于实现了服务的可访问性、数据的安全传输与业务的自动化处理,是构建现代Web服务、移动应用后端乃至物联网平台的基石。典型的应用场景包括用户身份认证、实时消息推送、数据同步及第三方平台集成等。具体到微信公众号开发,这一通用技术概念体现为与微信服务器建立双向通信的特定实践。开发者需要完成服务

weixin_30613343的博客 360

易信公众平台开发从入门到精通之开发验证

2.3 开发模式启用 这里要放一些前置条件,只能重新申请一个号码测试下。 2.3.1开发者模式 在”高级功能”页面中,我们首先要开启”开发者模式”,如下图: 点击”查看详情”按钮,打开界面如下: 这里我们需要填写URL和Token。当你填写上URL和Token后,点击“提交验证”的按钮后,易信服务器会发送GET请求到你的服务器上。如果验证无误的话,页面会生成AppID和AppS

vyiyun的专栏 863
上一篇: Android系统架构介绍.
下一篇: AppStore审核、排名规则及常用优化方法。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值