public function login_get (){
$this->load->helper ( 'auth' ); $redirectUrl = $this->input->cookie ( 'inapp_redirect', TRUE );
$redirectUrl = empty ( $redirectUrl ) ? '/index' : $redirectUrl; // 判斷是否已登入
if ( $this->input->cookie ( 'inapp_auth', TRUE ) ) {
delete_cookie ( 'inapp_redirect' );
header ( 'Location: ' . $redirectUrl );
exit;
} $user = $this->facebook->getUser ();
if ( $user ) { // FB 己登入
// 删除 redirect cookie
delete_cookie ( 'inapp_redirect' ); // 取得相對應的平台 uid
$params = array();
$params[ 'fbid' ] = $user;
$sp = 'CALL Member_SP_GetMemberRegInfoByFbid(?,@rtn)';
$member = $this->inapp->_query_sp ( $sp, $params, $error_no, 'row' ); //增加禁權的攔截
$status = $member[ 'status' ];
$checkStatus = $this->checkAccessBarred ( $status );
if ( ! $checkStatus )
exit (); // 存在則寫 cookie
if ( $error_no == _SUCCESS_ ) {
// 登入 Log
$params = array();
$params[ 'uid' ] = $member[ 'uid' ];
$params[ 'appid' ] = 1000000;
$sp = 'CALL App_SP_SetAppDailyLoginLog_v2(?,?,@rtn)';
$this->inapp->_query_sp ( $sp, $params, $error_no, 'row' ); //会员积分登录时间
$this->memberBat ( $member[ 'uid' ] ); //记录登陆信息
$this->member_model->addAdminLoginLog ( $member[ 'uid' ], 1, $params[ 'appid' ] ); // 取得授權
$params = array();
$params[ 'uid' ] = $member[ 'uid' ];
$params[ 'appid' ] = 1000000;
$sp = 'CALL App_SP_SetUserApp(?,?,@rtn)';
$this->inapp->_query_sp ( $sp, $params, $error_no, 'row' ); // 產生 auth
$auth = $this->_genAuth ( authHelper_genUUID ( $member, $this->config->item ( 'inappKey' ) ) );
$this->_setAuth ( $auth );
header ( 'Location: ' . $redirectUrl );
exit;
} // 不存在則取得 FB 相關個人資料
$fbuser_profile = $this->facebook->api ( '/me' ); // 寫入 Member DB
$params = array();
$params[ 'fbid' ] = $fbuser_profile[ 'id' ];
$params[ 'name' ] = empty ( $fbuser_profile[ 'name' ] ) ? '' : $fbuser_profile[ 'name' ];
$params[ 'link' ] = empty ( $fbuser_profile[ 'link' ] ) ? '' : $fbuser_profile[ 'link' ];
$params[ 'birthday' ] = empty ( $fbuser_profile[ 'birthday' ] ) ? '' : $fbuser_profile[ 'birthday' ];
$params[ 'gender' ] = empty ( $fbuser_profile[ 'gender' ] ) ? '' : $fbuser_profile[ 'gender' ];
$params[ 'email' ] = empty ( $fbuser_profile[ 'email' ] ) ? '' : $fbuser_profile[ 'email' ];
$params[ 'ip' ] = $_SERVER[ "REMOTE_ADDR" ]; $sp = 'CALL Member_SP_Register(?,?,?,?,?,?,?,@rtn)';
$member = $this->inapp->_query_sp ( $sp, $params, $error_no, 'row' ); // 註冊成功
if ( $error_no == _SUCCESS_ ) {
// 登入 Log
$params = array();
$params[ 'uid' ] = $member[ 'uid' ];
$params[ 'appid' ] = 1000000;
$sp = 'CALL App_SP_SetAppDailyLoginLog_v2(?,?,@rtn)';
$this->inapp->_query_sp ( $sp, $params, $error_no, 'row' ); //会员积分登录时间
$this->memberBat ( $member[ 'uid' ] ); //记录登陆信息
$this->load->model ( 'member_model' );
$this->member_model->addAdminLoginLog ( $member[ 'uid' ], 1, $params[ 'appid' ] ); // 取得授權
$params = array();
$params[ 'uid' ] = $member[ 'uid' ];
$params[ 'appid' ] = 1000000;
$sp = 'CALL App_SP_SetUserApp(?,?,@rtn)';
$this->inapp->_query_sp ( $sp, $params, $error_no, 'row' ); // 產生 auth
$auth = $this->_genAuth ( authHelper_genUUID ( $member, $this->config->item ( 'inappKey' ) ) );
} header ( 'Location: ' . $redirectUrl );
} else { // FB 未登入
$url = $this->facebook->getLoginUrl ( array('scope' => 'publish_stream, user_photos, email, user_birthday, user_online_presence', 'req_perms' => 5, 'fbconnect' => 0) );
header ( 'Location: ' . $url );
}
}

INAPP登陆调用的FB接口的更多相关文章

  1. 调用支付宝第三方接口(沙箱环境) SpringMVC+Maven

    一.蚂蚁金服开放平台的操作 网址:https://open.alipay.com/platform/home.htm 支付宝扫码登陆

  2. 在php中调用以及编写接口(转)

    如: http://localhost/openUser.php?act=get_user_list&type=json 在这里openUser.php相当于一个接口,其中get_user_l ...

  3. python接口自动化(三十五)-封装与调用--流程类接口关联(详解)

    简介 流程相关的接口,主要用 session 关联,如果写成函数(如上篇),s 参数每个函数都要带,每个函数多个参数,这时候封装成类会更方便.在这里我们还是以博客园为例,带着小伙伴们实践一下. 接口封 ...

  4. 如何请求一个需要登陆才能访问的接口(基于cookie)---apipost

    在后台在开发.调试接口时,常常会遇到需要登陆才能请求的接口. 比如:获取登陆用户的收藏列表,此时,我们就需要模拟登陆状态进行接口调试了.如图: 今天,我们讲解利用ApiPost的环境变量,解决这种需要 ...

  5. java调用CXF WebService接口的两种方式

    通过http://localhost:7002/card/services/HelloWorld?wsdl访问到xml如下,说明接口写对了. 2.静态调用 // 创建WebService客户端代理工厂 ...

  6. java获取https网站证书,附带调用https:webservice接口

    一.java 获取https网站证书: 1.创建一个java工程,新建InstallCert类,将以下代码复制进去 package com; import java.io.BufferedReader ...

  7. asp.net mvc 如何调用微信jssdk接口:分享到微信朋友(圈)| 分享到qq空间

    如何在asp.net mvc 项目里, 调用微信jssdk接口,现实功能: 分享到微信朋友(圈)| 分享到qq空间 1 创建一个Action,准备一些数据,初始化数据(签名): /// <sum ...

  8. 关于微信网页调用js-sdk相关接口注意事项目(一级域名与二级域名互相干扰!!!)

    不知道有没有网友遇到过同一个web应用用不同的域名(一级或二级域名)在两个公众号中调用JSSDK相关接口实现功能, 这种做法本来没有问题,问题在于用二级域名(同属一级域名下的二级域名)绑定另一个web ...

  9. JS调用腾讯接口获取天气

    想做个直接通过JS获取某个城市的天气.本来想通过直接调用中国气象网的接口: http://www.weather.com.cn/weather/101070201.shtml,但是跨域问题一直无法解决 ...

随机推荐

  1. es6--之箭头函数

    「箭头函数」是 ECMAScript6 中非常重要的性特性.很多文章都在描述它的上下文透明性以及短语法.新特性必然会带来很多好处,但凡事都有两面性.本篇文章会通过情景引导,让你知晓哪些情景下应该绕过箭 ...

  2. 【javascript面试题】之一

    1.求y和z的值是多少?<script type="text/javascript">var x = 1;var y = 0;var z = 0;function ad ...

  3. vm下-kali-linux-xfce-2018.1的简略安装

    1.选择版本为 debian 系统,因为是kali是基于debian的linux发行版 2.在安装首页选择 Graphical install,图形化安装,之后会让选择语言,选择简体中文,中国等,这些 ...

  4. 算法复习——网络流模板(ssoj)

    题目: 题目描述 有 n(0<n<=1000)个点,m(0<m<=1000)条边,每条边有个流量 h(0<=h<35000),求从点 start 到点 end 的最 ...

  5. 关于java读取文件IO流学习总结(一)

    IO流的分类: 1.根据流的数据对象来分: 高端流:所有的内存中的流都是高端流,比如:InputStreamReader 低端流:所有的外界设备中的流都是低端流,比如InputStream,Outpu ...

  6. 【2018.10.18】noip模拟赛Day2 地球危机(2018年第九届蓝桥杯C/C++A组省赛 三体攻击)

    题目描述 三体人将对地球发起攻击.为了抵御攻击,地球人派出了 $A × B × C$ 艘战舰,在太 空中排成一个 $A$ 层 $B$ 行 $C$ 列的立方体.其中,第 $i$ 层第 $j$ 行第 $k ...

  7. 垃圾收集器与内存分配策略 (深入理解JVM二)

    1.概述 垃圾收集(Garbage Collection,GC). 当需要排查各种内存溢出.内存泄露问题时,当垃圾收集成为系统达到更高并发量的瓶颈时,我们就需要对这些“自动化”的技术实施必要的监控和调 ...

  8. hdu 4430 Yukari's Birthday 枚举+二分

    注意会超long long 开i次根号方法,te=(ll)pow(n,1.0/i); Yukari's Birthday Time Limit: 12000/6000 MS (Java/Others) ...

  9. 湘潭大学oj 1206 Dormitory's Elevator dp

    27153 njczy2010 1206 Accepted 1976 KB 234 MS G++ 1415 B 2014-09-28 10:01:23 真是吐血ac,,,,这么easy的题..... ...

  10. Java常用几种加密算法

    对称加密算法是应用较早的加密算法,技术成熟.在对称加密算法中,数据发信方将明文(原始数据)和加密密钥(mi yue)一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去.收信方收到密文后,若想解 ...