snapchat第三方登录回验(服务器端)

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;
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值