PW8 For UCenter API 接口-站长杂谈下载

PW8 For UCenter API 接口

开通本站Svip会员,全站资源免费下
适用版本:        phpwind8.0
" V3 N7 x' w4 q) S/ e语言编码:        GBK简体 UTF8简体
( p8 m) k( \2 ^  {# S8 r! O2 l发现很多朋友操作不成功基本都是因为与UCenter的通信不成功,所以请先确保UCenter与PW的 api/uc.php 通信成功,再按我的教程操作,否则无效。
6 v8 Z/ `4 l& X! K9 G9 W7 F8 |! f) F2 v. _
昨天推出巧《用PW8的接口整合UCenter》教程后,引起了很多朋友的关注与支持,有的朋友按照教程实现了PW与UCenter的整合,但还有大部分朋友不太明白。比如:
5 e0 l" R0 `: `7 A! R% [  `# X5 C
有很多朋友问我如何做到PW目录下的api/uc.php 与 UCenter保持通信成功?1 i7 I! {! d- }$ i
还有的朋友说希望能给下uc.php的完整代码。& U3 ]" c  A# E2 v6 Y

5 X; C* t7 F5 s" K$ E插件在附件中,下面是教学部分
3 x0 b- D/ x4 k3 r* X; I/ d7 d! X* h5 o5 C5 O8 T6 N
下面,我们就来进行实例操作。6 o/ A9 h0 {! f, ~, l( M8 n# K
+ h- e: I7 s. |% ~( m, t6 t1 J+ s
首先上传uc_client 文件夹到PW的根目录,你可能要问PW目录下不是有一个uc_client么?我要说的是,直接删除掉,那个没用。uc_client 文件夹在UCenter安装包里可以找到,这里就不再赘述。
) I2 Y6 {* t0 ]) G; J0 S
& J) b* C/ k4 v8 Z% u复制以下代码并修改相关参数:
! Y5 ~  b: c; A! _- t
  1. <?php% H9 r3 M# W1 s# j( l
  2. define('UC_DIR','../uc_client');* u1 z6 Z( I3 }- g

  3. . C- E9 [4 L. w( {
  4. /*
    / o9 Y7 D6 i3 v3 Q. ?" Z- S
  5. ** BEGIN 通信相关 by phpfor.com0 s! j) E! V% n% C
  6. ** 以下代码直接到UCenter后台相关应用里复制过来替换掉。不明白?没关系,往下面看 UCenter与PW通信具体步骤
    6 H- w  ~9 G8 N% a7 E4 F3 A7 |
  7. */, ~" r6 S2 H0 @4 z# d
  8. define('UC_CONNECT', '');9 V9 A0 b# ~5 v& \6 Y
  9. define('UC_DBHOST', '');
    5 v8 ]: a0 c% S$ C# D/ |
  10. define('UC_DBUSER', '');- D! Z" c6 {. r7 P( z
  11. define('UC_DBPW', '');
    3 ^( `9 @1 v* I( M& e  C
  12. define('UC_DBNAME', '');
    * I$ T0 w5 F2 R8 J- @
  13. define('UC_DBCHARSET', 'utf8');8 Z' r/ w2 A+ o1 m
  14. define('UC_DBTABLEPRE', '');
    ( G0 `1 [$ Q( @% A7 t
  15. define('UC_DBCONNECT', '0');
    ; J& |- Q; j/ N0 ^/ \" V1 [) T
  16. define('UC_KEY', ''); //这里与PW后台的保持一致! S  G# y5 }0 ~3 H9 p+ V
  17. define('UC_API', '');0 @( n: }% A: G2 r
  18. define('UC_CHARSET', 'utf-8');
    8 Z/ A# J/ T+ r( u+ w
  19. define('UC_IP', '');
    : `. n- _& M' d; d% W
  20. define('UC_APPID', '');8 P* F" x4 {/ t3 ?6 t8 M# M) @
  21. define('UC_PPP', '');$ u! _+ D) M; E7 [& }
  22. /*
    5 G  \( _7 D, j4 X' N
  23. ** END
    + h% f. S2 ?+ u1 f) W. x
  24. */2 o  u0 ~: z! |. x! E, y9 P
  25. # n! s# }( R) R5 {6 `7 q- W
  26. define('PW_URL', '您的PW论坛地址');    // 后缀不要带 / 如:http://bbs.phpfor.com6 S+ \& f, c7 M9 p, G' A1 U
  27. define('API_RETURN_SUCCEED', '1');
    7 M; \' ~- M% D! i9 ]6 f
  28. define('API_RETURN_FAILED', '-1');9 h, y# S5 ]2 o9 I; `
  29. 8 u! R) C) n# }
  30. $code = $_GET['code'];& j' r& p7 u, S
  31. if($code && include(UC_DIR.'/client.php')){
    # B) e& I7 f# t, \, Y$ g# T0 w
  32.     $get = array();" V& l8 r2 g1 g; O( Q6 G
  33.     parse_str(uc_authcode($code, 'DECODE', UC_KEY), $get);
    % G9 i% c: r  o$ u$ m6 O2 x& ]
  34.     if(empty($get)) {+ s# @% o  [* D$ U  y# H/ J
  35.         exit('Invalid Request');
    . m) D6 w+ h" l
  36.     }
    9 d/ ^0 W! u( h2 `
  37.     if(time() - $get['time'] > 3600) {- @# ~6 J) k5 d# s
  38.         exit('Authracation has expiried');+ E: U! M4 ?# J9 U
  39.     }8 a: u/ j. T# V8 ?* _  S
  40.     $action = $get['action'];
    : Q6 e  i0 |3 c; e
  41.     $uc_note = new uc_note();
    5 m* k6 O$ [6 ?/ x7 Q" a/ i
  42.     if(method_exists($uc_note,$action)){9 G  Y/ r8 C6 q
  43.         $uc_note->$action($get);+ Y8 `3 f3 Y, J# |( V6 M! |2 K
  44.     }else{6 t/ u+ b1 W0 v- T
  45.         exit(API_RETURN_FAILED);
    9 q' A1 v1 n9 r' m- D  ~7 p9 x2 k2 L
  46.     }
    0 r; [! J  g$ ]$ l7 E6 s- W
  47. }
    9 B' c9 |5 I& T: e" k

  48. " T9 V% N0 s( {. H
  49.   Z# z1 `$ C, p( }

  50. : O* }1 O" |3 h4 F( Y
  51. class uc_note{$ M7 I1 y9 |3 {% A4 p1 R

  52. 2 s1 q. z' {, J' o6 g: Y
  53.     function synlogin($get) {. n7 A0 Q$ O0 M1 k, Q& w/ q. P
  54.         $userdb = array(   $ b7 \4 u' z* O8 e2 n5 _
  55.                     'username'    => $get['username'],( d- ?0 J8 q, X& Q  f+ ~4 F
  56.                     'password'    => $get['password'], : Z% Y* M$ |; K/ r" J) y7 f( j
  57.                     'email'        => $get['email'],- X7 Y8 s2 P) f" v0 R
  58.                     'time'        => time(),
    * V% ]: c1 t. x# i7 \/ ]) Q; @. ^- ?
  59.                     );
    3 v% \. C8 F* F+ v) x+ @
  60.         $this->passport('login',$userdb);7 @. @( o8 B( N( Q% x# z
  61.     }+ s  I$ t# u' ]3 D' L; e, q

  62. % ^2 B6 q  y3 c8 j) d
  63.     function synlogout($get){
    $ }& O% y- Z' F8 z# I  C
  64.         $this->passport('quit','');. R: A3 ~+ Z3 W! {
  65.     }
    2 T7 A( l( z' p0 `2 c* b8 `* d

  66. ( ]8 ~9 p9 w; T( s- n  }2 a% A
  67.     function passport($action,$userdb,$forward = ''){
    - a7 n* Q* ]5 E0 E9 G3 V
  68.         if($action == 'login'){
    * t; a6 ^' h% D# H
  69.             foreach($userdb as $key=>$val){
    ! s8 K' h( o* B0 W; C' J' N
  70.                 $userdb_encode .= $userdb_encode ? "&$key=$val" : "$key=$val";
    + r: R% {0 d( b; e4 y2 K$ n
  71.             }& b- X0 K( P- Y) U
  72.         }
    . J7 g! V: E0 M) \- r0 A0 K: r4 d. `
  73.         $userdb_encode = str_replace('=','',$this->strCode($userdb_encode));
    , Q8 H$ o$ L( L0 ~9 }" q* y  K
  74.         $verify = md5($action.$userdb_encode.$forward.UC_KEY);
    8 B( R  E2 L& c* j1 {
  75.         header('Location: '.PW_URL.'/passport_client.php?action='.$action.'&userdb='.rawurlencode2 m9 l8 `* Z9 q5 H; \- ], L
  76. ($userdb_encode).'&forward='.rawurlencode($forward).'&verify='.$verify);0 D) K1 x: s; I0 N
  77.         exit;! J+ X6 l- t4 K
  78.     }
    8 w2 _- A  G! }, b
  79. - W- V* w# r& R* _% l6 h: Y
  80.     function strCode($string,$action='ENCODE'){8 F& A4 ?' E) ?
  81.         $action != 'ENCODE' && $string = base64_decode($string);
    / E" _9 v0 {0 M; y& `
  82.         $code = '';
    ) G5 E" `2 P( ^- y! x8 m
  83.         $key  = substr(md5($_SERVER["HTTP_USER_AGENT"].UC_KEY),8,18);
    2 v* r' N! H- V/ |, p' x
  84.         $keylen = strlen($key); $strlen = strlen($string);) p  I( C- _9 K) g$ r- O
  85.         for ($i=0;$i<$strlen;$i++) {0 {3 q$ {- q8 C& J) a- C  z% _
  86.             $k = $i % $keylen;
    0 D5 O# I* Q; l- {1 g
  87.             $code  .= $string[$i] ^ $key[$k];3 |7 h  b2 T7 y5 D2 {! Z
  88.         }* }  M. s" m2 U; g/ N! @' D1 u
  89.         return ($action!='DECODE' ? base64_encode($code) : $code);+ q' k" ^4 u. i$ t* S& h# ^7 \
  90.     }
    / n2 T: m$ i2 t0 Y# ^8 r* c# y
  91. : N% H+ j+ j- i, i! ^

  92. ! Y1 q# k9 p6 j
  93.     function test($get){
    1 b/ ?1 Z9 K3 x  J1 _: ]7 M
  94.         exit(API_RETURN_SUCCEED);
    # t+ ^" a4 }3 m) O0 Y7 J+ _
  95.     }
    & ^) i3 O9 _& U3 J2 t0 L, P* [/ Y
  96. }
    3 [7 z  A7 v* v: n  h

  97. 5 X; D+ B: r. ^& \) k( \

  98. ( |: e3 B  O/ |9 n5 z
  99. 7 \8 E: X" W9 T  v: k% U+ ]$ L+ ^
  100. ?>
复制代码
UCenter与PW通信具体步骤  A, b) V8 R$ ~/ [' G( P+ T
1 F3 C- G) ~1 R" q* C! v2 q
1.UCenter配置1 G8 F5 x! J- T- h
进UCenter后台->应用管理->添加新应用->自定义安装
2 T1 L# y/ \7 Y  `6 u8 F应用名称:PW论坛
& U# h, c) W) I7 b4 J  c应用URL:PW论坛地址
% x* I0 x( n6 N0 _' j. g通信密钥:与PW后台 第三方整合的密钥一致4 C: E0 Q7 T; I, J4 @; `1 U. O
应用类型:其他
7 A& F6 J( j. o0 V! J/ L是否开启同步登录:是. u8 X; W* I7 |# A( W
是否接受通知:是* T/ j- z/ j* ?  z) H
+ U# q$ f- R  v6 R7 _3 a/ C" T
然后提交,成功后复制 应用的 UCenter 配置信息:
9 x/ F( R! q& c, `! c7 E% A里面的内容 替换以上配置信息。0 ~8 l+ A2 O7 a  b: \
  m: J4 ?+ n# U2 e  Q
2.PW配置
$ r* \. O  i* H# a; }) o进后台->应用中心->插件管理->通行证& p( f% n% @& s3 f- }# ]
- L% Q8 C6 ]7 T: x. J+ \) a, z
通行证:开启( Z0 n# V6 c  k3 }9 f! @/ B
通行证私有密钥:填UC里设置的密钥) Y, q# T9 a# I2 X. I( m) h+ |
将本系统作为:客户端9 v# J! _+ A  p3 W) r, Q
3 ^( |0 G' r- i0 o
//UC其他应用的地址都行,只要能同步登录退出。
5 x/ E: K) X0 i5 F* x9 ]通行证服务器地址:% x" X& E$ Y: u' C. u8 P0 `6 ?, m
通行证登录地址:
3 G2 T" h0 a  J  e$ i通行证退出地址:
/ y8 ?1 A+ e7 v$ R通行证注册地址:
7 }' j+ E% V/ y: a( o8 X
" V6 i4 U$ r$ ?7 ~. F此时再看应用:通信成功!
# k; _! q( a8 m! e
亲爱的游客您好,请 登录 后进行 回复

4 K( y) s4 C" U( L

- K' t3 T' y- h& o9 h

全部评论 0

您需要登录后才可以回帖 立即登录
登录
0
0
0
返回顶部