java实现  微博登录、微信登录、qq登录实现代码

微信,微博,QQ,这是现在目前用的最多的手机 APP,我们做产品哪能不跟他们不沾边,对于登录,我想谁也不想要多少个帐号密码,根本记不住!

为了增加用户体验,用户能够快速的注册登录,第三方账号进行登录注册的的需求也就由此而诞生

1、微信

1) 微信登录也是最坑人的,需要花300大洋成为开发者账户,没办法谁让微信用户群体大呢所以也就只好认了;然后登录网站后台需要创建网站应用,填写授权回调域(登录网站的域名)只填写域名即可

申请地址: https://open.weixin.qq.com/cgi-bin/index?t=home/index&lang=zh_CN

2)查看微信提供的接口,写java代码

 public void wx() {
 try {
  response.sendRedirect("https://open.weixin.qq.com/connect/qrconnect?appid="
   + ShareLoginDict.WEIXINKEY.getState()
   + "&redirect_uri="
   + URLEncoder.encode(ShareLoginDict.WEIXINURL.getState())
   + "&response_type=code&scope=snsapi_login&state=66666#wechat_redirect");
 } catch (IOException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }
 }

@Override
 public Result userwx(String return_code) {
 Result result = new Result();
 Map<String, Object> token = (Map<String, Object>) WeiXinAPI
  .getToken(return_code);
 if (token != null && token.get("access_token") != null) {
  Map<String, Object> user = (Map<String, Object>) WeiXinAPI
   .getWxUser(token.get("access_token").toString(),
    token.get("openid").toString());
  if (user != null) {
  result.addModel("openid", user.get("openid"));
  result.addModel("nickname", user.get("nickname"));
  result.addModel("headimgurl", user.get("headimgurl"));
  result.addModel("data", "data_success");
  }else{
  result.addModel("data", "data_null");
  }
 }else{
  result.addModel("data", "data_null");
 }
 return result;
 }

当用户通过微信登录时,调用微信接口获取用户接口返回微信端的openid,昵称,头像;然后将此信息存入到浏览器的cookie中,当用户浏览其他信息时,辨别如果是用户是用微信登录的,拦截器直接从cookie中获取用户的信息显示昵称和头像,并同时判断该openid是否和数据库中用户做绑定,如果没有绑定提示用户注册。

2、qq登录

1)qq互联创建应用

接入QQ登录前,网站需首先进行申请,获得对应的appid与appkey,以保证后续流程中可正确对网站与用户进行验证与授权。

申请appid和appkey的用途

appid :应用的唯一标识。在OAuth2.0认证过程中,appid的值即为oauth_consumer_key的值。

appkey:appid对应的密钥,访问用户资源时用来验证应用的合法性。在OAuth2.0认证过程中,appkey的值即为oauth_consumer_secret的值。

申请地址: http://connect.qq.com/intro/login/

2)查看QQ提供的接口,写java代码

public void qq() {
 try {
  response.sendRedirect("https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id="
   + ShareLoginDict.QQKEY.getState()
   + "&redirect_uri="
   + ShareLoginDict.QQURL.getState() + "&scope=get_user_info");
 } catch (IOException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }
 }

@Override
 public Result userqq(String return_code) {
 Result result = new Result();
 Map<String, Object> token = (Map<String, Object>) QQAPI
  .getToken(return_code);
 if (token != null && token.get("access_token") != null) {
  Map<String, Object> tokenme = (Map<String, Object>) QQAPI
   .getTokenMeOpenId(token.get("access_token").toString());
  if (tokenme != null && tokenme.get("openid") != null) {
  Map<String, Object> user = (Map<String, Object>) QQAPI
   .getQqUser(token.get("access_token").toString(),
    tokenme.get("openid").toString());
  if (user != null) {
   result.addModel("openid", tokenme.get("openid"));
   result.addModel("nickname", user.get("nickname"));
   result.addModel("figureurl", user.get("figureurl"));
   result.addModel("data", "data_success");
  }else{
   result.addModel("data", "data_null");
  }
  }else{
  result.addModel("data", "data_null");
  }

 }else{
  result.addModel("data", "data_null");
 }
 return result;
 }

当用户通过QQ登录时,调用QQ接口获取用户接口返回QQ端的openid,昵称,头像;然后将此信息存入到浏览器的cookie中,当用户浏览其他信息时,辨别如果是用户是用微信登录的,拦截器直接从cookie中获取用户的信息显示昵称和头像,并同时判断该openid是否和数据库中用户做绑定,如果没有绑定提示用户注册。

3 微博登录

1)微博创建应用

申请地址:http://open.weibo.com/authentication

2)查看微博提供的接口,写java代码

public void wb() {
 try {
  response.sendRedirect("https://api.weibo.com/oauth2/authorize?client_id="
   + ShareLoginDict.WEIBOKEY.getState()
   + "&redirect_uri="
   + ShareLoginDict.WEIBOURL.getState()
   + "&response_type=code");
 } catch (IOException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }
 }

@Override
 public Result userwb(String return_url, String return_code) {
 Result result = new Result();
 Map<String, Object> token = (Map<String, Object>) WeiBoAPI.getToken(
  return_url, return_code);
 if (token != null && token.get("access_token") != null) {
  Map<String, Object> user = (Map<String, Object>) WeiBoAPI
   .getWbUser(token.get("access_token").toString(),
    token.get("uid").toString());
  if (user != null) {
  result.addModel("name", user.get("screen_name"));
  result.addModel("pic", user.get("avatar_large"));
  result.addModel("idstr", user.get("idstr"));
  result.addModel("data", "data_success");
  }else{
  result.addModel("data", "data_null");
  }
 }else{
  result.addModel("data", "data_null");
 }
 return result;
 }

当用户通过微博登录时,调用微博接口获取用户接口返回微博端的idstr,昵称,头像;然后将此信息存入到浏览器的cookie中,当用户浏览其他信息时,辨别如果是用户是用微信登录的,拦截器直接从cookie中获取用户的信息显示昵称和头像,并同时判断该openid是否和数据库中用户做绑定,如果没有绑定提示用户注册。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

(0)

相关推荐

  • java实现简单QQ登录界面

    本文实例为大家分享了java实现简单QQ登录界面的具体代码,供大家参考,具体内容如下 java在图形界面,不是太强项,但不是不可以做,它的开源是very nice! 实现代码如下(想实现完美的界面,可能要更多coding的支持): package com.ts.x.swing; import java.awt.Color; import java.awt.Container; import java.awt.Cursor; import java.awt.Font; import java.aw

  • Java Swing实现QQ登录页面

    本文实例为大家分享了Java Swing 实现QQ登录页面,供大家参考,具体内容如下 代码如下: import java.awt.*; import javax.swing.*;  public class Demo121 extends JFrame{     public Demo121()     {         JPanel jp1=new JPanel();         JPanel jp2=new JPanel();         JPanel jp3=new JPanel

  • java代码块之简易qq登录界面及按钮颜色设置代码

    本文主要分享了关于简洁版qq登录界面及按钮颜色设置的相关代码,供参考. java代码块 公共包(初始化窗口位置) package util; import java.awt.Dimension; import java.awt.Toolkit; import javax.swing.JFrame; //图形化界面的工具类 public class FrameUtil { //设置窗体出现在中间位置 public static void initFrame(JFrame frame,int wid

  • Java模拟实现QQ三方登录(单点登录2.0)

    本文实例为大家分享了Java模拟实现QQ三方登录的具体代码,供大家参考,具体内容如下 本次例子模拟这样的情况: 一共有2个spring boot应用: 一个是某公司的web,第二个是QQ服务端. 某公司的应用为127.0.0.1:8082 QQ服务端为127.0.0.1:8081 演示如下: 点击使用QQ登录: 在弹出的界面输入数据点击登录后: 关键代码如下: 某公司web端: MyController.java package cn.it1995.login.controller; impor

  • java模仿实现QQ登录界面

    本文实例为大家分享了java模仿实现qq登录界面的具体代码,供大家参考,具体内容如下 这是我模仿QQ2015版界面,实现的基本功能有登陆验证,重置等,当然直接复制代码运行是不一样的,还要注意自己插入自己的图片. 结果截图如下所示: 代码: import java.awt.BorderLayout; import java.awt.Color; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.Image

  • JavaWeb实现同一帐号同一时间只能一个地点登陆(类似QQ登录的功能)

    JavaWeb实现同一帐号同一时间只能一个地点登陆(类似QQ登录的功能)的实现思路如下所示: 一.该功能有什么作用 大家想想吧.反正总会有这样的需求的.这年头什么需求不会有..呵呵.有时候也不一定是需求,很有可能为了安全也会这么做.例如考试系统,在线聊天系统,很有必要做成这样的吧. 二.实现过程 a.问题分析 在系统中,我们一般都是把登录信息绑定到session中,看来从这入手是可能找到解决办法.说白了,也就是当用户登录时,判断一下这个用户有没有登录,如果登录了,就把以前的那个session清除

  • Java Swing仿QQ登录界面效果

    本文实例为大家分享了Java Swing仿QQ登录界面展示的具体代码,供大家参考,具体内容如下 闲来无事将早些时候已实现的QQ登录界面再实现了一遍,纯手工打造(意思是没有用NetBeans.MyEclipse的拖动功能). 源代码如下: package ibees.qq; import java.awt.BorderLayout; import java.net.URL; import javax.swing.ImageIcon; import javax.swing.JButton; impo

  • Java实现QQ第三方登录的示例代码

    前期准备工作 1.云服务器 2.备案的域名 3.本地调试需要修改hosts文件,将域名映射到127.0.0.1 如何修改hosts文件:https://www.jb51.net/diannaojichu/319774.html 申请QQ互联,并成为开发者 申请QQ互联创建应用时需要备案域名,所以建议提前准备备案域名. QQ互联:https://connect.qq.com/index.html 登录后,点击头像,进入认证页面,填写信息,等待审核. 审核通过后创建应用 应用创建通过审核后,就可以使

  • 使用java swing实现qq登录界面示例分享

    用Java Swing做的一个QQ登录界面 复制代码 代码如下: import java.awt.Container;import java.awt.Image;import java.awt.event.ActionEvent;import java.awt.event.ActionListener; import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JCheckBox;import javax

  • Java Web 实现QQ登录功能一个帐号同一时间只能一个人登录

    对于一个帐号在同一时间只能一个人登录,可以通过下面的方法实现: 1 .在用户登录时,把用户添加到一个ArrayList中 2 .再次登录时查看ArrayList中有没有该用户,如果ArrayList中已经存在该用户,则阻止其登录 3 .当用户退出时,需要从该ArrayList中删除该用户,这又分为三种情况 ① 使用注销按钮正常退出 ② 点击浏览器关闭按钮或者用Alt+F4退出,可以用JavaScript捕捉该页面关闭事件, 执行一段Java方法删除ArrayList中的用户 ③ 非正常退出,比如

随机推荐