济菏高速数据中心代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

77 lines
3.7 KiB

package com.zc.business.controller;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.Map;
import java.util.HashMap;
//微博获取token的工具类
public class WeiboAuthExample {
private static final String APP_KEY = "1894516689";
private static final String APP_SECRET = "4e89660243b70328fb74ae10f9ed98e5";
private static final String REDIRECT_URI = "https://api.weibo.com/oauth2/default.html"; // 回调URL,需要URL编码
private static final String AUTHORIZE_URL = "https://api.weibo.com/oauth2/authorize?client_id="+APP_KEY+"&redirect_uri="+REDIRECT_URI+"&response_type=code";
public static void main(String[] args) throws IOException {
// 1. 引导用户到微博授权页面
System.out.println("Please visit the following URL to authorize your Weibo account:");
System.out.println(AUTHORIZE_URL);
System.out.println("After authorization, you will be redirected to the callback URL with an Authorization Code.");
// 在实际应用中,你应该设置一个HTTP服务器来处理回调,而不是从控制台读取输入。
// 这里为了简化示例,我们直接从控制台读取Authorization Code。
System.out.print("Enter the Authorization Code from the callback URL: ");
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String code = reader.readLine();
// 2. 使用Authorization Code请求Access Token
String accessTokenUrl = "https://api.weibo.com/oauth2/access_token";
Map<String, String> params = new HashMap<>();
params.put("client_id", APP_KEY);
params.put("client_secret", APP_SECRET);
params.put("grant_type", "authorization_code");
params.put("code", code);
params.put("redirect_uri", REDIRECT_URI);
String accessTokenResponse = sendPostRequest(accessTokenUrl, params);
// 解析Access Token响应,实际应用中应该使用JSON库来解析
System.out.println("Access Token Response: " + accessTokenResponse);
}
private static String sendPostRequest(String url, Map<String, String> params) throws IOException {
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
con.setRequestProperty("Accept", "application/json");
con.setDoOutput(true);
StringBuilder postData = new StringBuilder();
for (Map.Entry<String, String> param : params.entrySet()) {
if (postData.length() != 0) postData.append('&');
postData.append(URLEncoder.encode(param.getKey(), StandardCharsets.UTF_8.toString()));
postData.append('=');
postData.append(URLEncoder.encode(param.getValue(), StandardCharsets.UTF_8.toString()));
}
byte[] postDataBytes = postData.toString().getBytes(StandardCharsets.UTF_8);
try (OutputStream os = con.getOutputStream()) {
os.write(postDataBytes);
}
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
return response.toString();
}
}