java springboot调用第三方接口的token存储在哪里

java springboot调用第三方接口获取的token用于接下来的请求,
可以不存数据库吗

2个回答

    public class TokenTest {

    private static String token = null;

    public String getToken() {
        if (token == null){
            token = getTokenFromThird();
        }
        return token;
    }

    private String getTokenFromThird(){
        return "从第三方得到的token";
    }
}
VICTOR_fusheng
VICTOR_fusheng 回复萌茗酱: 可以啊
8 个月之前 回复
Ming_MingYa
萌茗酱 谢谢,在这个类中的定时任务直接用这个类中的静态变量(token)可以吗 ,
8 个月之前 回复

一般来说accessToken都是存在缓存中,过期时间一般也是低于accessToken的过期时间,例如Token过期时间为6小时,你在缓存中可以设置为提前1分钟过期之类的

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
开发供第三方调用接口,怎么避免调用这个接口前,需要调用登录接口登录

我在我们系统里写了一个查询数据接口,我们系统里面定义了拦截器,没有登录会打回到首页。 第三方调用这个数据接口的话,怎么能让他不需要登录就能调用呢

使用java的Http请求里的Url对象调用第三方接口返回的数据中文乱码

URL url = new URL("http://apis.5118.com/morerank/baidupc"); // 将url 以 open方法返回的urlConnection 连接强转为HttpURLConnection连接 (标识一个url所引用的远程对象连接) // 此时cnnection只是为一个连接对象,待连接中 HttpURLConnection connection = (HttpURLConnection) url.openConnection(); // 设置连接输出流为true,默认false (post 请求是以流的方式隐式的传递参数) connection.setDoOutput(true); // 设置连接输入流为true connection.setDoInput(true); // 设置请求方式为post connection.setRequestMethod("POST"); connection.setRequestProperty("Charsert", "UTF-8"); //设置请求编码 // post请求缓存设为false connection.setUseCaches(false); // 设置该HttpURLConnection实例是否自动执行重定向 connection.setInstanceFollowRedirects(true); // 设置请求头里面的各个属性 (以下为设置内容的类型,设置为经过urlEncoded编码过的from参数) // application/x-javascript text/xml->xml数据 application/x-javascript->json对象 application/x-www-form-urlencoded->表单数据 // ;charset=utf-8 必须要,不然妙兜那边会出现乱码【★★★★★】 //addRequestProperty添加相同的key不会覆盖,如果相同,内容会以{name1,name2} connection.addRequestProperty("from", "sfzh"); //来源哪个系统 //setRequestProperty添加相同的key会覆盖value信息 //setRequestProperty方法,如果key存在,则覆盖;不存在,直接添加。 //addRequestProperty方法,不管key存在不存在,直接添加。 connection.setRequestProperty("Authorization", " APIKEY D9FD7C014E8E4367B2891EF5B4B493"); connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); // 建立连接 (请求未开始,直到connection.getInputStream()方法调用时才发起,以上各个参数设置需在此方法之前进行) connection.connect(); // 创建输入输出流,用于往连接里面输出携带的参数,(输出内容为?后面的内容) DataOutputStream dataout = new DataOutputStream(connection.getOutputStream()); // 格式 parm = aaa=111&bbb=222&ccc=333&ddd=444 String parm = "taskid="+taskid; System.out.println("传递参数:" + parm); // 将参数输出到连接 dataout.writeBytes(parm); // 输出完成后刷新并关闭流 dataout.flush(); dataout.close(); // 重要且易忽略步骤 (关闭流,切记!) //System.out.println(connection.getResponseCode()); // 连接发起请求,处理服务器响应 (从连接获取到输入流并包装为bufferedReader) BufferedReader bf = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8")); String line; StringBuilder sb = new StringBuilder(); // 用来存储响应数据 // 循环读取流,若不到结尾处 while ((line = bf.readLine()) != null) { //sb.append(bf.readLine()); String lin=new String(line.getBytes(), "utf-8"); sb.append(lin); } bf.close(); // 重要且易忽略步骤 (关闭流,切记!) connection.disconnect(); // 销毁连接 return sb.toString(); 返回的数据中文乱码使用java的Http请求里的Url对象调用第三方接口返回的数据中文乱码

java开发第三方登录,accesstoken保存在哪里?

首次进行第三方登录开发,当获取到accesstoken之后,他有过期期限,应该将他存储到哪里呢?

基于springboot实现security-oauth2.0客户端模式token验证?

项目是基于spring springboot去实现的。现在要利用security-oauth2.0去实现token验证 以免其他人随意调用,基本拦截配置已经完成了。但是token怎么生成呢?怎么去写token 的这个接口呢?本人是新手不是很熟悉,试着很多相关demo,也看了官方文档,但是还是 懵懂状态,希望大神能给个详细的解释,能给一个例子就更好了,谢谢了

WebClient.UploadValues方法调用第三方接口返回400错误

问题:webclient请求的时候,远程服务器返回400错误, 但是数据又传送给对方了,很困惑为啥会catch到400错误。 代码在: byte[] byRemoteInfo = webClientObj.UploadValues(strUrl,postVars); 这里报的异常,返回 {"远程服务器返回错误: (400) 错误的请求。"} //注释里的更改请求头的几个方法都试过了,不好使。 ``` private void SendPost(int agent, string secretKey, string strUrl, ViewModels.GetReInfoViewModel viewModel, string cameraName) { agent = 1;//代理人id secretKey = "miyao"; strUrl="请求串";//第三方接收的url,demo:http://www.baidu.com/webapi/postvalues?access_token=passsecrete try { var webClientObj = new WebClient(); var postVars = new System.Collections.Specialized.NameValueCollection(); //返回状态内容 postVars.Add("BusinessStatus", viewModel.BusinessStatus.ToString()); postVars.Add("StatusMessage", viewModel.StatusMessage); //webClientObj.Encoding = Encoding.UTF8; byte[] byRemoteInfo = webC**lientObj.UploadValues(strUrl,postVars); //返回值 string remoteInfo = Encoding.UTF8.GetString(byRemoteInfo); logInfo.Info(string.Format("请求第三方{0}接口返回消息:{1}", agent, remoteInfo)); } catch (Exception ex) { logError.Error("调用" + agent + "接口传摄像头续保信息接口异常,Url为:" + strUrl + ";\n 异常信息:" + ex.StackTrace + " \n " + ex.Message); } } ```

怎样在java后台 调用微信中的 素材接口 【急】求助

![图片说明](https://img-ask.csdn.net/upload/201709/21/1505978089_23470.jpg) 其实 要做的功能就是 像图片一样 当别人关注公众号时 就获得素材 显示给用户。 现在关注的功能已经实现了,获得素材 在java后台怎样调用这个接口呢 https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=ACCESS_TOKEN 调用这个接口后 又该怎样操作 能够出现素材 (知识浅薄,没看懂文档)希望得到帮助

关于java调用京东API接口

最近想做一个积分商城,用户累计积分,便可以在商城上买东西,商城上大部分商品准备调用京东的接口 用京东上的商品,但不知道从何做起,最好大家能给一点例子,现在能成功获取到京东的access_token了 谢谢大家了!

java关于Httpclient传递token值的用法

是这样的,对方传来一个地址以及一个token值,现在是要获取地址里面数据,但是需要token的验证,如何在java发送请求的同时,验证token值,token值是固定不变

如何在Golang中使用REST Api从第三方获取数据

<div class="post-text" itemprop="text"> <p>I am trying to get data from another application using REST Api. I am able to login and get the token value but not able to get the data.</p> <p>Below is my code:</p> <pre><code>func main() { url := "https://******.***.****.**:***/api/jwt/login" payload := strings.NewReader("username=****&amp;password=****") req, _ := http.NewRequest("POST", url, payload) req.Header.Add("content-type", "application/x-www-form-urlencoded") req.Header.Add("cache-control", "no-cache") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := ioutil.ReadAll(res.Body) s := string(body) fmt.Println(res) fmt.Println(string(body)) var token = "AR-JWT "+s url1 := "https://***.***.**.**:**/api/arsys/v1/entry/HPD:Help Desk/?q='Last Resolved Date' &gt;= \"01/09/2018\"&amp;fields=values(Incident Number,Customer Login ID,Last Resolved Date,Assigned Group)" req1, _ := http.NewRequest(http.MethodGet, url1, nil) req1.Header.Set("authorization", token) req1.Header.Set("cache-control", "no-cache") req1.Header.Set("Content-Type", "application/json") res1, _ := http.DefaultClient.Do(req1) defer res1.Body.Close() body1, _ := ioutil.ReadAll(res1.Body) fmt.Println(res1) fmt.Println(string(body1)) } </code></pre> <p>I can get the result "body" but not the data. Below is the error:</p> <pre><code>&amp;{400 Unknown Version 400 HTTP/1.1 1 1 map[Content-Length:[0]] 0xc04211c0c0 0 [] true false map[] 0xc042106100 0xc042180160} </code></pre> <p>Can anyone please tell me where am I going wrong?</p> </div>

java开发安卓接口,token放缓存好还是数据库好呢?

java后台开发安卓接口,用户认证过产生的token放数据库好还是缓存好呢,过期时间设置多长合适呢 (存数据库,每次用户的查询操作都要查数据库,感觉速度慢影响数据库性能)

关于 java token的问题

前端账号密码登录后,在java后台获取了一个token,下次访问后台是携带token,是以什么方式来访问后台的,访问的是什么路径,希望给出直白一些的解答(本人第一次使用token)

关于Spring boot + SpringSecurity +jwt token失效的问题

比如我登abc的用户,然后我在另一个地点也登abc的用户,那前一个登陆的在刷新或者请求接口的时候要登出, 或者是我后台改了abc的密码,那abc这个账户在刷新请求接口的时候要登出。 框架我搭好了 代码如下: 生成token工具类: ``` public class JwtTokenUtil { private static InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("jwt.jks"); // 寻找证书文件 private static PrivateKey privateKey = null; private static PublicKey publicKey = null; static { // 将证书文件里边的私钥公钥拿出来 try { KeyStore keyStore = KeyStore.getInstance("JKS"); // java key store 固定常量 keyStore.load(inputStream, "123456".toCharArray()); privateKey = (PrivateKey) keyStore.getKey("jwt", "123456".toCharArray()); // jwt 为 命令生成整数文件时的别名 publicKey = keyStore.getCertificate("jwt").getPublicKey(); } catch (Exception e) { e.printStackTrace(); } } public static String generateToken(String subject, int expirationSeconds, String salt) { return Jwts.builder() .setClaims(null) .setSubject(subject) .setExpiration(new Date(System.currentTimeMillis() + expirationSeconds * 1000)) // .signWith(SignatureAlgorithm.HS512, salt) // 不使用公钥私钥 .signWith(SignatureAlgorithm.RS256, privateKey) .compact(); } public static String parseToken(String token, String salt) { String subject = null; try { Claims claims = Jwts.parser() // .setSigningKey(salt) // 不使用公钥私钥 .setSigningKey(publicKey) .parseClaimsJws(token).getBody(); subject = claims.getSubject(); } catch (Exception e) { } return subject; } } ``` 登陆成功后生成JTWtoken : ``` @Component public class AjaxAuthenticationSuccessHandler implements AuthenticationSuccessHandler { @Override public void onAuthenticationSuccess(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Authentication authentication) throws IOException, ServletException { ResponseBase responseBase = new ResponseBase(); responseBase.setCode("200"); responseBase.setMassage("Login Success!"); String jwtToken = JwtTokenUtil.generateToken(String.valueOf(authentication.getPrincipal()), 300, "_secret"); responseBase.setJwtToken(jwtToken); httpServletResponse.getWriter().write(JSON.toJSONString(responseBase)); } } ``` 监听器: ``` @Component public class JwtAuthenticationTokenFilter extends OncePerRequestFilter { @Autowired AdminSysUserSecurityService adminSysUserSecurityService; @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws ServletException, IOException { String authHeader = request.getHeader("Authorization"); if (authHeader != null && authHeader.startsWith("Bearer ")) { final String authToken = authHeader.substring("Bearer ".length()); String username = JwtTokenUtil.parseToken(authToken, "_secret"); if (username != null && SecurityContextHolder.getContext().getAuthentication() == null) { UserDetails userDetails = adminSysUserSecurityService.loadUserByUsername(username); if (userDetails != null) { UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities()); authentication.setDetails(new WebAuthenticationDetailsSource().buildDetails(request)); SecurityContextHolder.getContext().setAuthentication(authentication); } } } chain.doFilter(request, response); } } ``` ``` @Component("rbacauthorityservice") public class RbacAuthorityService { public boolean hasPermission(HttpServletRequest request, Authentication authentication) { Object userInfo = authentication.getPrincipal(); boolean hasPermission = false; if (userInfo instanceof UserDetails) { String username = ((UserDetails) userInfo).getUsername(); //获取资源 Set<String> urls = new HashSet(); urls.add("/**/**"); // 这些 url 都是要登录后才能访问,且其他的 url 都不能访问! Set set2 = new HashSet(); Set set3 = new HashSet(); AntPathMatcher antPathMatcher = new AntPathMatcher(); for (String url : urls) { if (antPathMatcher.match(url, request.getRequestURI())) { hasPermission = true; break; } } return hasPermission; } else { return false; } } } ``` 配置: ``` @Configuration public class AdminWebSecurityConfig extends WebSecurityConfigurerAdapter { @Value("${pay.strength}") private int strength; @Autowired private AdminSysUserSecurityService adminSysUserSecurityService; @Bean public PasswordEncoder passwordEncoder(){ // return NoOpPasswordEncoder.getInstance();//不对密码加密 return new BCryptPasswordEncoder(strength);//秘钥迭代次数为 2^strength,strength取值在 4-31 之间,默认10 } @Autowired AjaxAuthenticationEntryPoint authenticationEntryPoint; // 未登陆时返回 JSON 格式的数据给前端(否则为 html) @Autowired AjaxAuthenticationSuccessHandler authenticationSuccessHandler; // 登录成功返回的 JSON 格式数据给前端(否则为 html) @Autowired AjaxAuthenticationFailureHandler authenticationFailureHandler; // 登录失败返回的 JSON 格式数据给前端(否则为 html) @Autowired AjaxLogoutSuccessHandler logoutSuccessHandler; // 注销成功返回的 JSON 格式数据给前端(否则为 登录时的 html) @Autowired AjaxAccessDeniedHandler accessDeniedHandler; // 无权访问返回的 JSON 格式数据给前端(否则为 403 html 页面) @Autowired JwtAuthenticationTokenFilter jwtAuthenticationTokenFilter; // JWT 拦截器 @Autowired SelfAuthenticationProvider provider; // 自定义安全认证 @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { // 加入自定义的安全认证 auth.authenticationProvider(provider); } @Override public void configure(HttpSecurity http)throws Exception{ //开启HttpSecurity配置 http.csrf().disable() .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS) // 使用 JWT,关闭token .and() .httpBasic().authenticationEntryPoint(authenticationEntryPoint) .and() .authorizeRequests() // .antMatchers("/db/**").hasRole("DB") // .antMatchers("/user/**").hasRole("USER") // .antMatchers("/admin/**").hasRole("ADMIN") // .antMatchers("/user/**").access("hasAnyRole('ADMIN','ROOT')") // .antMatchers("/db/**").access("hasAnyRole('ADMIN') and hasRole('DBA')") //除了前面路径,用户访问其他URL都必须认证后访问 .anyRequest() .access("@rbacauthorityservice.hasPermission(request,authentication)") // RBAC 动态 url 认证 .and() //开启表单登录,同事配置了登入接口为/login .formLogin() /* //该接口主要方便ajax或者移动端登入 .loginProcessingUrl("/login") //设置登录成功跳转页面,error=true控制页面错误信息的展示 .successForwardUrl("/index").failureUrl("/login?error=true") */ //登入接口都不需要认证 .successHandler(authenticationSuccessHandler) // 登录成功 .failureHandler(authenticationFailureHandler) // 登录失败 .permitAll() .and() //开启注销登入配置 .logout() .logoutSuccessHandler(logoutSuccessHandler) .permitAll(); http.rememberMe().rememberMeParameter("remember-me") .userDetailsService(adminSysUserSecurityService).tokenValiditySeconds(300); http.exceptionHandling().accessDeniedHandler(accessDeniedHandler); // 无权访问 JSON 格式的数据 http.addFilterBefore(jwtAuthenticationTokenFilter, UsernamePasswordAuthenticationFilter.class); // JWT Filter } ``` 登陆成功后获取token,postman测试: ![图片说明](https://img-ask.csdn.net/upload/201912/11/1576056718_177252.png) 可以 但是我重新调用新的登陆接口,相同用户名获取新的token后,原来的token依旧可以请求。 所以要在哪边配置 用户其它地方登陆,或者用户密码变更,jtwtoken失效

第三方登录成功后该保存那些信息呢

数据库里应该存那些信息? 能否一直根据这些信息判断第三方登录进来的用户和数据库匹配

springboot oauth2.0 实现token的Authentication 验证?

项目基于spring springboot,利用oauth2去实现一个token的Authentication 验证,采取 clientcredetails,利用clientid clientsecret还有grant_type=clientcredetails去请求 oauth/token,那么这里面的clientID和clientSecret是怎么来的呢,是由后端去随机生成的吗,如果是这样的话,需要怎么做呢?如果不是,那他是怎么生成的呢?也是有Authentication 的接口去生成的吗?本人刚刚接触不是很懂希望大神指教一下,麻烦不要推荐文章,因为看了很多,现在自己有点迷茫,希望大神能借助自己的语言帮忙解答一下小弟的问题,谢谢了!

springboot 的项目用postman做测试的时候,接口返回401

整个项目都是从别人那里拿来的,别人那里跑的时候都没问题,但是到我这边做接口测试的时候就报401了,项目没有做权限验证之类的。 maven也添加了这个 <!-- 执行器, 解决 spring-boot-starter-security 401 的问题--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> 没有security的依赖包。 网上找的办法基本都试过了,都不行。 想问问大佬们还可能是什么问题造成的。

java接口中怎么才能调用代码中的另外一个url

做项目的时候碰到一个问题,怎么才能在代码里通过http发起一个请求来调用代码里另外一个接口的url, 都是在同一个项目里,并且只能通过url来请求 有没有大佬知道方法 求解答

关于用java开发微信公众平台开发 token验证失败的问题

大家好,最近在学习用java开发微信公众平台,第一次写的代码token验证通过了,用的是阿里云的服务器换系统(server2008->2003)后就怎么也通过不过验证。直接输入域名www.zhenggufang.com/aip/longin网页显示404.域名也已经备过案。服务器上的tomcat也启动正常tomcat/conf/server也修改了。多谢提交还是token验证失败。请各位帮忙看看代码如下: package service; import java.io.IOException; import java.io.PrintWriter; import java.util.Date; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import message.resp.TextMessage; import util.ValidationUtil; public class LoginServlet extends HttpServlet{ @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println(get 请求); String signature = request.getParameter(signature); String timestamp = request.getParameter(timestamp); String nonce= request.getParameter(nonce); String echostr=request.getParameter(echostr); PrintWriter out=response.getWriter(); System.out.println(signature+ signature); System.out.println(timestamp+ timestamp); System.out.println(nonce+ nonce); System.out.println(echostr+ echostr); 验证请求确认成功原样返回echostr参数内容,则接入生效,成为开发者成功,否则 if(ValidationUtil.chechSignature(signature, timestamp, nonce)) { out.print(echostr); } out.close(); } 接受微信服务器发过来的xml数据包(通过post)形式发过来的 @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String respXml=;响应的xml串 request.setCharacterEncoding(utf-8); response.setCharacterEncoding(utf-8); String signature = request.getParameter(signature); String timestamp = request.getParameter(timestamp); String nonce= request.getParameter(nonce); PrintWriter out=response.getWriter(); if(ValidationUtil.chechSignature(signature, timestamp, nonce)) { 接收并解析来自用户的xml数据包中的内容 MapString,String reqMap=MessageUtil.parseXml(request); String ToUserName=reqMap.get(ToUserName); String FromUserName=reqMap.get(FromUserName); String MsgType=reqMap.get(MsgType); String Content=reqMap.get(Content); System.out.println(用户给公众号发的消息+Content); 开始响应消息给用户 String respContent=;要响应的文本内容 构建一条文本消息 TextMessage textMsg=new TextMessage(); textMsg.setFromUserName(FromUserName); textMsg.setFromUserName(ToUserName); textMsg.setCreateTime(new Date().getTime()); textMsg.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_TEXT); if(MsgType.equals(MessageUtil.RESP_MESSAGE_TYPE_TEXT)) { respContent=大家好,来自工作公众平台的测试消息!!; } textMsg.setContent(respContent); respXml=MessageUtil.messageToXml(textMsg); System.out.println(respXml+respXml); 接受打印的字符 out.println(respXml); } out.close(); out=null; } } package util; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Arrays; /** * 微信请求校验工具类 * @author y * */ public class ValidationUtil { private static String token="wlghr0479"; public static boolean chechSignature(String signature,String timestamp,String nonce) { //1.将token,timestamp,nonce三个参数排序 String[] str= new String[]{token,timestamp,nonce}; Arrays.sort(str); //2.将三个参数字符串接成一个字符串 StringBuilder buff=new StringBuilder(); for (int i=0;i<str.length;i++) { buff.append(str[i]); } //3.进行sha1加密 MessageDigest md=null; String result=""; try { md= MessageDigest.getInstance("SHA-1"); byte[]date =md.digest(buff.toString().getBytes()); //将字节数组转换成字符串 result=bytesToStr(date); System.out.println("加密后的"+result); } catch (NoSuchAlgorithmException e) { // TODO Auto-generated catch block e.printStackTrace(); } return result!=null ?(result.equals(signature.toUpperCase())) :false; } //将直接数组转换成十六进制字符串 private static String bytesToStr(byte[] byteArray) { String strDigest=""; for (int i=0;i<byteArray.length;i++) { strDigest += byteToHexStr(byteArray[i]); } return strDigest; } //将一个字节转换成16进制字符串 private static String byteToHexStr(byte mByte) { char[]Digit ={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; char[]temp1=new char[2]; temp1[0]=Digit[mByte>>>4 & 0X0F]; temp1[1]=Digit[mByte & 0X0F]; String str=new String(temp1); return str; } } <?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <!-- 部署配置 --> <servlet> <servlet-name>LoginServlet</servlet-name> <servlet-class>service.LoginServlet</servlet-class> </servlet> <!-- 配置映射 --> <servlet-mapping> <servlet-name>LoginServlet</servlet-name> <url-pattern>/api/login</url-pattern> </servlet-mapping> <display-name></display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>

php qq第三方登录获取不到AccessToken的值,

$grant_type = 'authorization_code';//必须 授权类型,在本步骤中,此值为“authorization_code”。 $client_id = $this->appId;//必须 申请QQ登录成功后,分配给网站的appid。 $client_secret = $this->appKey;//必须 申请QQ登录成功后,分配给网站的appkey。 $code = $code;//必须 上一步返回的authorization code。如果用户成功登录并授权,则会跳转到指定的回调地址,并在URL中带上Authorization Code。例如,回调地址为www.qq.com/my.php,则跳转到:http://www.qq.com/my.php?code=520DD95263C1CFEA087******注意此code会在10分钟内过期。 $redirect_uri = 'http://m.lawtoutiao.com/';//必须 与上面一步中传入的redirect_uri保持一致。 $redirect_uri = urlencode($redirect_uri); $request_url = "https://graph.qq.com/oauth2.0/token?grant_type=$grant_type&client_id=$client_id&client_secret=$client_secret&code=$code&redirect_uri=$redirect_uri"; $response = urldecode($request_url); $params = array(); parse_str($response, $params);//把字符串解析到变量里面 $access_token = $params['access_token']; echo $access_token; 我这个$access_token没有值怎么办 求各位大神帮帮忙

app接口只用token认证安全吗

接口只用token认证安全吗接口只用token认证安全吗接口只用token认证安全吗

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

搜狗输入法也在挑战国人的智商!

故事总是一个接着一个到来...上周写完《鲁大师已经彻底沦为一款垃圾流氓软件!》这篇文章之后,鲁大师的市场工作人员就找到了我,希望把这篇文章删除掉。经过一番沟通我先把这篇文章从公号中删除了...

总结了 150 余个神奇网站,你不来瞅瞅吗?

原博客再更新,可能就没了,之后将持续更新本篇博客。

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

优雅的替换if-else语句

场景 日常开发,if-else语句写的不少吧??当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段: 优先判断条件,条件不满足的,逻辑及时中断返回; 采用策略模式+工厂模式; 结合注解,锦...

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

2020阿里全球数学大赛:3万名高手、4道题、2天2夜未交卷

阿里巴巴全球数学竞赛( Alibaba Global Mathematics Competition)由马云发起,由中国科学技术协会、阿里巴巴基金会、阿里巴巴达摩院共同举办。大赛不设报名门槛,全世界爱好数学的人都可参与,不论是否出身数学专业、是否投身数学研究。 2020年阿里巴巴达摩院邀请北京大学、剑桥大学、浙江大学等高校的顶尖数学教师组建了出题组。中科院院士、美国艺术与科学院院士、北京国际数学...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

程序员为什么千万不要瞎努力?

本文作者用对比非常鲜明的两个开发团队的故事,讲解了敏捷开发之道 —— 如果你的团队缺乏统一标准的环境,那么即使勤劳努力,不仅会极其耗时而且成果甚微,使用...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

《Oracle Java SE编程自学与面试指南》最佳学习路线图2020年最新版(进大厂必备)

正确选择比瞎努力更重要!

《Oracle Java SE编程自学与面试指南》最佳学习路线图(2020最新版)

正确选择比瞎努力更重要!

都前后端分离了,咱就别做页面跳转了!统统 JSON 交互

文章目录1. 无状态登录1.1 什么是有状态1.2 什么是无状态1.3 如何实现无状态1.4 各自优缺点2. 登录交互2.1 前后端分离的数据交互2.2 登录成功2.3 登录失败3. 未认证处理方案4. 注销登录 这是本系列的第四篇,有小伙伴找不到之前文章,松哥给大家列一个索引出来: 挖一个大坑,Spring Security 开搞! 松哥手把手带你入门 Spring Security,别再问密...

字节跳动面试官竟然问了我JDBC?

轻松等回家通知

面试官:你连SSO都不懂,就别来面试了

大厂竟然要考我SSO,卧槽。

阿里面试官让我用Zk(Zookeeper)实现分布式锁

他可能没想到,我当场手写出来了

终于,月薪过5万了!

来看几个问题想不想月薪超过5万?想不想进入公司架构组?想不想成为项目组的负责人?想不想成为spring的高手,超越99%的对手?那么本文内容是你必须要掌握的。本文主要详解bean的生命...

自从喜欢上了B站这12个UP主,我越来越觉得自己是个废柴了!

不怕告诉你,我自从喜欢上了这12个UP主,哔哩哔哩成为了我手机上最耗电的软件,几乎每天都会看,可是吧,看的越多,我就越觉得自己是个废柴,唉,老天不公啊,不信你看看…… 间接性踌躇满志,持续性混吃等死,都是因为你们……但是,自己的学习力在慢慢变强,这是不容忽视的,推荐给你们! 都说B站是个宝,可是有人不会挖啊,没事,今天咱挖好的送你一箩筐,首先啊,我在B站上最喜欢看这个家伙的视频了,为啥 ,咱撇...

代码注释如此沙雕,会玩还是你们程序员!

某站后端代码被“开源”,同时刷遍全网的,还有代码里的那些神注释。 我们这才知道,原来程序员个个都是段子手;这么多年来,我们也走过了他们的无数套路… 首先,产品经理,是永远永远吐槽不完的!网友的评论也非常扎心,说看这些代码就像在阅读程序员的日记,每一页都写满了对产品经理的恨。 然后,也要发出直击灵魂的质问:你是尊贵的付费大会员吗? 这不禁让人想起之前某音乐app的穷逼Vip,果然,穷逼在哪里都是...

立即提问
相关内容推荐