java编写,其它语言同思路
接收客户端请求参数
@Data
public class SnapChatUserinfo {
public String externalId;
public String accessToken;
}
验证请求思路
//请求地址
private final static String API_URL = "https://kit.snapchat.com/v1/me";
//json参数
String parm="{\"query\":\"{me{displayName bitmoji{avatar} externalId}}\" }";
//header参数 身份验证
httpPost.setHeader("Authorization","Bearer "+snapChatUserinfo.getAccessToken());
httpPost.setHeader("Accept-Encoding", "application/json;charset=utf-8");
//结果处理 比较客户端传入的externalId 和 接口请求 externalId是否相等
JSONObject data = JSONObject.parseObject(resp).getJSONObject("data");
JSONObject me=data.getJSONObject("me");
String externalId=me.getString("externalId");
if(externalId.equals(snapChatUserinfo.getExternalId()))
{
return true;
}
else
return false;
java工具类
public class SnapChatLogin {
protected static Logger logger= LoggerFactory.getLogger(SnapChatLogin.class);
private final static String API_URL = "https://kit.snapchat.com/v1/me";//接口请求地址
public static Boolean check(SnapChatUserinfo snapChatUserinfo)
{
//json请求参数
String parm="{\"query\":\"{me{displayName bitmoji{avatar} externalId}}\" }";
CloseableHttpClient httpclient = HttpClients.createDefault();
Boolean result=false;
try {
RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(5000).setConnectionRequestTimeout(1000)
.setSocketTimeout(5000).build();
//代理
// HttpHost proxy = new HttpHost("127.0.0.1", 7890);
// RequestConfig requestConfig = RequestConfig.custom()
// .setConnectTimeout(5000).setConnectionRequestTimeout(1000)
// .setSocketTimeout(5000)
// .setProxy(proxy).build();
HttpPost httpPost = new HttpPost(API_URL);
httpPost.setConfig(requestConfig);
StringEntity stringEntity = new StringEntity(parm);
httpPost.setEntity(stringEntity);
httpPost.setHeader("Authorization","Bearer "+snapChatUserinfo.getAccessToken());
httpPost.setHeader("Accept-Encoding", "application/json;charset=utf-8");
CloseableHttpResponse response = httpclient.execute(httpPost);
try {
HttpEntity entity = response.getEntity();
if (response.getStatusLine().getStatusCode() == 200) {
String resp = EntityUtils.toString(entity);
logger.info("snapchat result:"+resp);
JSONObject data = JSONObject.parseObject(resp).getJSONObject("data");
JSONObject me=data.getJSONObject("me");
String externalId=me.getString("externalId");
if(externalId.equals(snapChatUserinfo.getExternalId()))
{
return true;
}
else
return false;
} else {
result=false;
}
}catch (Exception ex){
logger.error(ex.getMessage());
}
finally {
response.close();
}
} catch (ClientProtocolException e) {
logger.error("[异常] :", e.getMessage());
} catch (IOException e) {
logger.error("[异常] :", e.getMessage());
} finally {
try {
httpclient.close();
} catch (IOException e) {
logger.error("[httpclient 关闭异常] : ", e.getMessage());
}
}
return result;
}
}