当前位置: 首页 > news >正文

帮做论文网站公司网站制作制作

帮做论文网站,公司网站制作制作,dede 网站地图 文章,天津网站建设推广前期准备 提前准备、说明#xff1a;目前对接推特api开发门户分为3个版本#xff0c;分别是免费的#xff0c;100美金一个月的基础版以及5000美金一个月的企业版#xff0c;免费的目前就两个接口可以调用#xff0c;所以想要对接和使用推特最基本的也需要付100美元一个月…前期准备 提前准备、说明目前对接推特api开发门户分为3个版本分别是免费的100美金一个月的基础版以及5000美金一个月的企业版免费的目前就两个接口可以调用所以想要对接和使用推特最基本的也需要付100美元一个月他们的区别如下图进入链接https://developer.twitter.com/en/portal/products/free   如下图 https://developer.twitter.com/en/portal/products/free 而基本的就可以使用很多接口了这里就不阐述了可以自己去里面看。 那么推特我们如何对接呢下面给大家讲一下详细的流程 1第一步需要我们创建应用开发者应用由于我是开通了基础版100美金所以我可以创建两个应用里面有3个选项包括生产测试等等我们直接选择生产就好了免费的只能创建一个应用应用链接https://developer.twitter.com/en/portal/dashboard ​  2创建成功以后还需要我们进去配置程序的公钥私钥身份验证设置等等做好对接前期工作。 上面配置完成以后我们就可以看到我们自己的客户ID了 开始对接 我们对接的是API v2的接口大家一定要注意看接口文档别看到1.1获取企业版的的去调别调不通。 说明推特对接分为V1.1 、V2 以及企业版的Gnip2.0这里目前使用的是V2的形式来对接的V1.1对接一直报权限不足不给用具体什么原因有知道的小伙伴可以告诉我一下建议大家对接的时候去看一下 文档 。那么如何获取用户的code以及Token呢下面直接上代码。 https://twitter.com/i/oauth2/authorize? client_idc3dqYzExdmo4VmpNY2tjbnFPNDM6MTpjaQ scopetweet.read%20offline.access%20tweet.write%20tweet.moderate.write%20users.read%20follows.read%20follows.write response_typecode redirect_urihttp://8kvjtw.natappfree.cc/test/getTuiteCode stateprofilecode_challenge0ioze5m20493ny2 code_challenge_methodplain参数说明 client_id 上面图里面的客户IDscope 你需要用户给你授权的权限每个权限都是以%20分割下图会详细介绍具体怎么来的response_typecode 这个是固定的表示我们要去用户的coderedirect_uri 回调地址获取到code以后会回调到哪里这里建议回调到前端页面让前端在地址里面取出code返给后端类似于这样的 http://8kvjtw.natappfree.cc/test/getTuiteCode?stateprofilecodeVmtmRFlDaXdV....code的值state自己随机定义字符串回调里面会给你带回来的code_challenge随机定义一串字符但是换取Token的时候需要传一样的过去哦这里重点记一下code_challenge_methodplain 表示不加密随机字符 scope 字段解释,可以去下图里面找出支持用户授权的权限标识就好 直接在浏览器里面打开会出现下面这样的点击授权应用就会回调到我们上面设置的回调地址里面并且里面会带两个参数一个是code,另一个就是我们设置的state也会带给我们参数都是拼接在回调地址后面的。 根据code换取token Maven依赖 dependencygroupIdoauth.signpost/groupIdartifactIdsignpost-core/artifactIdversion1.2.1.2/version /dependencydependencygroupIdoauth.signpost/groupIdartifactIdsignpost-commonshttp4/artifactIdversion1.2.1.2/version /dependencydependencygroupIdcom.twitter/groupIdartifactIdtwitter-api-java-sdk/artifactIdversion1.1.4/version /dependencydependencygroupIdcommons-httpclient/groupIdartifactIdcommons-httpclient/artifactIdversion3.1/version /dependencydependencygroupIdcom.google.guava/groupIdartifactIdguava/artifactIdversion29.0-jre/version /dependency 推特相关配置、文档https://developer.twitter.com/en/docs/authentication/oauth-2-0/user-access-token /*** 推特相关配置*/ public class TwitterConfig {/*** 客户id和客户私钥*/public static final String CLIENT_ID c3dqYzExdmo4VmpNY2t1111MTpjaQ;public static final String CLIENT_SECRET kfuA39dCX6tEG1111deXZHpOV-fjv9umx55ZdccCkNONjea;/*** 应用KYE和私钥*/public static final String CONSUMER_KEY lhyfiDV3nX1111ffGeHMR;public static final String CONSUMER_SECRET BRNxnV5LxN23MlW4BCOdiSpQkQ1rn11119jtptduIkcwjB;/*** 应用的TOKEN*/public static final String ACCESS_TOKEN 1482941195941633-A8xyN5xuqCrRJwj111dbFgkbStu;public static final String ACCESS_TOKEN_SECRET oZaKBphpooOR7GMBB3EFELIkU1111vzoXPAQ;} Data Accessors(chain true) public class TwitterDto {/*** 获取的访问令牌*/private String accessToken;/*** 刷新令牌*/private String refreshToken;} /*** 根据code获取用户token* param code 根据code换取token* param refreshToken 根据token刷新token* return*/public TwitterDto requestBearerToken(String code,String refreshToken) {try {String clientId URLEncoder.encode(TwitterConfig.CLIENT_ID, UTF-8);String clientSecret URLEncoder.encode(TwitterConfig.CLIENT_SECRET, UTF-8);//商户id和商户的私钥String credentials clientId : clientSecret;//对商户id和私钥机密一下String base64Credentials Base64.getEncoder().encodeToString(credentials.getBytes());//这个地址一定要和获取code链接里面填的回调地址保持一致(恶心)String redirectURI http://8kvjtw.natappfree.cc/test/getTuiteCode;//请求、换取Token的地址URL url new URL(https://api.twitter.com/2/oauth2/token);HttpURLConnection connection (HttpURLConnection) url.openConnection();connection.setRequestMethod(POST);connection.setRequestProperty(Authorization, Basic base64Credentials);connection.setRequestProperty(Content-Type, application/x-www-form-urlencoded;charsetUTF-8);connection.setDoOutput(true);connection.setDoInput(true);String data ;if(StringUtils.isBlank(refreshToken)){//authorization_code、refresh_token、client_credentials//我们这里是根据code换取Token所以选择authorization_codeString grantType authorization_code;//获取令牌需要的参数 code_verifier 需要和获取code传入参数 code_challenge 保持一致data grant_type grantType code code redirect_uri redirectURIclient_idTwitterConfig.CLIENT_IDclient_secretTwitterConfig.CLIENT_SECRETcode_verifier0ioze5m20493ny2;}else{//下面是通过刷新令牌的Token去换取新的Token房子Token过期//authorization_code、refresh_token、client_credentialsString grantType refresh_token;//刷新令牌需要的参数data refresh_tokenrefreshTokengrant_type grantType client_idTwitterConfig.CLIENT_IDclient_secretTwitterConfig.CLIENT_SECRETcode_verifierchallenge;}connection.getOutputStream().write(data.getBytes(UTF-8));BufferedReader reader new BufferedReader(new InputStreamReader(connection.getInputStream()));StringBuilder response new StringBuilder();String line;while ((line reader.readLine()) ! null) {response.append(line);}reader.close();String jsonResponse response.toString();JSONObject json JSON.parseObject(jsonResponse);TwitterDto twitterDto new TwitterDto();Object accessToken json.get(access_token);//我们实际使用TokentwitterDto.setAccessToken(accessToken null ? null : accessToken.toString());//当我们使用的Token过期以后可以用这个来换取新的TokenaccessToken json.get(refresh_token);twitterDto.setRefreshToken(accessToken null ? null : accessToken.toString());return twitterDto;} catch (Exception e) {e.printStackTrace();return null;}} Slf4j RestController RequestMapping(/test) Api(tags 测试) Transactional(isolation Isolation.READ_COMMITTED) public class TestController extends BaseComponent {Autowiredprivate TwitterService twitterService;GetMapping(getTuiteCode)ApiOperation(测试推特code)public MapString, String getTuiteCode(String code, String state) {MapString, String map new HashMap();TwitterDto bearerToken twitterService.requestBearerToken(code,null);//刷新一下令牌//bearerToken twitterService.requestBearerToken(code,bearerToken.getRefreshToken());System.out.println(Bearer Token: bearerToken.getAccessToken());map.put(Token, bearerToken.getAccessToken());map.put(state, state);return map;} } 这就是一个完整的换取Token的流程后面章节介绍如何使用Token操作用户相关数据
http://www.pierceye.com/news/585669/

相关文章:

  • 网站建设及推广方案ppt模板微信小程序开发工具下载哪个版本
  • 固安县城乡和住房建设局网站科技公司手机端网站
  • 寿光网站建设思科企业网络拓扑图
  • 中国建设银行河南省分行网站建筑人才服务中心官网
  • 响应式app网站模板单页淘宝客网站2014年行吗
  • 西安网站推广优化高端定制网站开发设计建站流程
  • m版网站开发公司如何做网络推广营销
  • 济宁商城网站开发设计网址源码在线查看
  • 网站建设公司介绍百度电脑怎么用wordpress
  • 宛城区网站建设广东seo推广方案
  • 北京建网站定制价格网站风格总结
  • 如何建设一个购物网站wordpress 优酷插件
  • 你们网站做301网站开发规模和工作量的计算
  • 班级网站建设甘肃住房和城乡建设厅网站
  • 网站建设哪家性价比高住房和城乡建设部网站办事大厅里边
  • 外贸小语种网站建设深圳市保障性住房申请官网
  • 阿里云买域名后怎么做网站wordpress创建空白页面
  • 小型公司建网站腾讯风铃wordpress
  • 广州做模板网站的公司怎么区分营销型和展示型的网站
  • 网站推广服务外包1688阿里巴巴国际站首页
  • 深圳学校网站建设wordpress rossi 汉化
  • 课程网站课程资源建设北京吴勇设计工作室
  • 网站建设费用什么意思软件制作专业
  • 扬中本地网站外国做美食视频网站
  • 深圳手机网站制作价钱阜阳中国建设银行官网站
  • 廊坊建设网站企业安卓开发自学教程
  • 做网站虚拟主机配置汉沽手机网站建设
  • 设计一个网站先做哪些构造姑苏区建设局网站
  • 制造业营销外贸网站建设网站管理的内容包括
  • 看电视剧的免费网站app下载网站等保如何做