首先来看下流程:
流程原理:
1.通过code获得access_token通过授权,并获取用户的信息(包括用户u_id)(这个u_id在后面的第三方登录表里面叫sina_id,那个表是需要自己建的)
2.查询第三方登录表,如果不存在用户sina_id,分2种情况,一:用户在平台已经有帐号,这时需要把平台(比如:平台的用户表是:user_reg)用户id绑定到第三方登录表(比如是:third_login表),然后就让客户登录;
二:用户在平台没有帐号,跳转至注册页面注册,注册的同时,信息写入uer_reg表,同时也把用户sina_id写入第三方登录表进行绑定;
3.查询第三方登录表(third_login),如果存在用户sina_id,再查询用户表(user_reg),如果邮箱已经激活,就直接登录,如果没有激活,提示用户去邮箱激活帐号。
下面开始详讲步骤:
第一步:申请App key和App secret申请地址:http://open.weibo.com/ 在页面点击网站接入WEB,进去申请就好了,通过后会得到App Key 和 App Secret如下:
App Key:1428003339
App Sercet:f1c6177a38b39f764c76a1690720a6dc
回调地址:http://test.com/callback.php
说明:申请下来后,那你的这个新浪帐号就是测试帐号,你在开发的时候可以用这个帐号来调试,其他帐号是无法登录,无法返回信息的。开发前,最好上官网看下开发流程,流程是最重要的。只要思路理清楚了,剩下就是用代码实现你的所思所想。
第二步:下载SDK,下载php版的,下载地址(官网):http://code.google.com/p/libweibo/downloads/list,下载下来有5个文件,其中一个是saetv2.ex.class.php,我只需要这个文件。
第三步:代码
1.建立一个第三方登录表,以便存储第三方登录的信息(新浪是u_id,QQ是openid,他们都是唯一的,用来标识用户,我们根据这个来存储):
代码如下:
CREATE TABLE IF NOT EXISTS `third_login` (
`user_id` INT(6) NOT NULL,
`sina_id` BIGINT(16) NULL,
`qq_id` varchar(64) NULL,
PRIMARY KEY (`user_id`),
UNIQUE INDEX `user_id_UNIQUE` (`user_id` ASC),
INDEX `sina_id` (`sina_id` ASC),
INDEX `index4` (`qq_id` ASC))
ENGINE = MyISAM
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_bin
COMMENT = '第三方登录表'
说明:平台返回的是u_id,他是用户的唯一标识,我把他存为sina_id,user_id是关联平台用户表user_reg的id的,user_reg表我这里不列出,你可以按实际项目需求来建表,推荐的操作工具有phpmyadmin,MySQL Workbench,操作方便。
新闻热点
疑难解答