PHP QQ一键登入网站实现过程

qq一键登入功能对于大多数小中型网站来说是十分必要的,因为他给你的用户带来了极大的方便,但是想要集成网站的qq一键登入功能,你必须要一些编程基础,使网站和qq登入的应用之间进行一些必要的交互,下面我简单的介绍下具体的流程。

1.访问网址qq互联平台http://connect.qq.com,使用任意qq帐号登入

2.管理中心菜单中开始创建一个应用,以便你的网站和域名能够合法使用该功能。



3.选择创建网站应用,然后填写选项

如果没有什么问题,点击创建应用按钮即可提交,接下来你会看到你的提交进入未审核状态

得到提示:您还有1款未审核应用,尽快完善接入平台资料并提交上线申请,三个月内未上线会被平台清除,APPID被收回

现在就可以开始开发,等开发流程好了后,去申请审核,大约1-3天内即可正常使用了

访问网址http://wiki.connect.qq.com/

查看开发文档,重要内容如下

从文档中可以看到,首先放置“QQ登录”按钮,就是在你的网站放一个qq图标,但是需要有一个链接,你可以在你的网站建一个php文件,比如qqlogin.php,qq图标的链接是http://yourdoamin.com/qqlogin.php?c=login, 为什么要这样写,是为了一个页面处理多个请求,下面看下代码:

PHP文件:qqlogin.php


你的域名表示为:http://yourdoamin.com


switch ($_GET['a'])
{
case 'login';
$_SESSION['state']=time();
$url="https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=xxxxx&redirect_uri=http://www.yourdomain/qqlogin.php?a=callback&state=".$_SESSION['state']."&scope=get_user_info";
redirect($url, $delay =0,$js = false,$jsWrapped = true, $return = false);
break;
case 'callback';

$code=addslashes($_GET['code']);
$state=addslashes($_GET['state']);

//防止xss跨站攻击
if(($code=='') or ($state<>$_SESSION['state']))
{
exit('err,please back');
}

$url='https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&client_id=xxxxx&client_secret=xxxxx&code='.$code.'&redirect_uri=http://www.yourdomain/qqlogin.php?a=callback';
//redirect($url, $delay =0,$js = false,$jsWrapped = true, $return = false);
$access_token=vita_get_url_content($url);

if ($access_token)
{
  $url='https://graph.qq.com/oauth2.0/me?'.$access_token;
  $callback=vita_get_url_content($url);

  if ($callback)
  {
   $content=str_replace('callback(',"",$callback);
   $content=str_replace(');',"",$content);
   $content=json_decode($content);
   $client_id=$content->client_id;
   
       //判断是否合法
       if ($client_id=='xxxxx')
       {
       $openid=$content->openid;
            //此处省略db操作,你可以使用$openid去你自己数据库查有没这个用户唯一标识,没有就去插入,如果需要用户昵称等资料可以调用接口https://graph.qq.com/user/get_user_info实现代码如下
       $url="https://graph.qq.com/user/get_user_info?".$access_token."&oauth_consumer_key=xxxxx&openid=".$openid."";
       $userinfo=vita_get_url_content($url);
       $userinfo=json_decode($userinfo);
       $nickname=$userinfo->nickname;
       // 然后赋值session执行登入    
       redirect('http://www.yourdomain.com', $delay =0,$js = false,$jsWrapped = true, $return = false);exit;
       }
   }
}
exit('time out');
break;
default:
}

//自定义跳转函数
function redirect($url, $delay = 0, $js = false, $jsWrapped = true, $return = false)        
    {        
    $delay = (int)$delay;        
    if (!$js) {        
      if (headers_sent() || $delay > 0) {
            echo'      
   <html>        
       <head>        
       <meta http-equiv="refresh" content="'.$delay.';URL='.$url.'" />        
       </head>        
       </html>';        
            exit;        
        } else {        
            header("Location:".$url."");        
            exit;        
        }        
    }        
    $out = '';        
    if ($jsWrapped) {        
        $out .= '<script language="JavaScript" type="text/javascript">';        
    }        
    $url = rawurlencode($url);        
    if ($delay > 0) {        
        $out .= "window.setTimeOut(function () { document.location='{$url}'; }, {$delay});";        
    } else {        
        $out .= "document.location='{$url}';";        
    }        
    if ($jsWrapped) {        
        $out .= '        
   }        
    if ($return) {        
        return $out;        
    }        
    echo $out;        
        exit;        
    } 



以下就是登入窗口,接口差不多了,是不是很简单


本文章转载自:php使用QQ一键登入第三方网站




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现QQ一键加群功能,可以使用Android中的Intent来调用手Q客户端的API。首先需要在AndroidManifest.xml文件中添加拨号权限,如下所示: ``` <uses-permission android:name="android.permission.CALL_PHONE" /> ``` 然后,在代码中定义一个方法,传入官网生成的key,如下所示: ``` public void joinQQGroup(String key) { Intent intent = new Intent(); intent.setData(Uri.parse("mqqopensdkapi://bizAgent/qm/qr?url=http://qm.qq.com/cgi-bin/qm/qr?from=app&p=android&k=" + key)); try { startActivity(intent); } catch (Exception e) { // 未安装手Q或安装的版本不支持 Toast.makeText(this, "未安装手Q或安装的版本不支持", Toast.LENGTH_LONG).show(); } } ``` 通过调用startActivity(intent)来启动手Q客户端,实现一键加群的功能。如果手Q客户端未安装或安装的版本不支持,可以通过Toast来显示提示信息。记得在调用该方法之前先检查是否已经添加了拨号权限。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [【TextView】实现QQ一键加群功能](https://blog.csdn.net/mingtiannihao0522/article/details/79861250)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Unity Android 跳转拨号界面和一键加群](https://blog.csdn.net/weixin_44806700/article/details/123223471)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值