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

PW8 For UCenter API 接口

来自版块: 站长杂谈发表于: 2015-8-8 05:14:48
36146
0
如本资源下载地址失效,请点击此处进行反馈
开通本站Svip会员,全站资源免费下
适用版本:        phpwind8.0
& i# |" x9 R0 B& t5 [) [语言编码:        GBK简体 UTF8简体
0 O6 C. \  p. D; U发现很多朋友操作不成功基本都是因为与UCenter的通信不成功,所以请先确保UCenter与PW的 api/uc.php 通信成功,再按我的教程操作,否则无效。
$ A. n& C: T& r& ]4 ]' v. r5 a' u2 b2 `; j0 W/ x. K" l
昨天推出巧《用PW8的接口整合UCenter》教程后,引起了很多朋友的关注与支持,有的朋友按照教程实现了PW与UCenter的整合,但还有大部分朋友不太明白。比如:3 [  ^9 }' |" ?# B4 v

) g/ Z8 t# {& N5 W4 t! A8 x* e6 X有很多朋友问我如何做到PW目录下的api/uc.php 与 UCenter保持通信成功?9 E% h& B' k" y0 U+ f
还有的朋友说希望能给下uc.php的完整代码。
" J. P5 e3 H' L" ?6 o! A- z, R3 x, ]; m& b, X
插件在附件中,下面是教学部分7 K, Y8 V: F; D  F7 P2 n' i) p

6 c3 U7 T0 E/ v8 x( X3 t# T7 H下面,我们就来进行实例操作。3 g8 g6 Q6 A  ?+ a! c% U

1 `9 [! W" S# e  n首先上传uc_client 文件夹到PW的根目录,你可能要问PW目录下不是有一个uc_client么?我要说的是,直接删除掉,那个没用。uc_client 文件夹在UCenter安装包里可以找到,这里就不再赘述。  c$ ^" g, h! Q3 o& P7 [& c

* |; v8 x9 X& n+ v: ?0 D6 W复制以下代码并修改相关参数:
# l+ k% r: W+ L/ y/ S2 Q. v
  1. <?php6 T1 k! f+ n. ^
  2. define('UC_DIR','../uc_client');
    0 U9 M& d! E8 D
  3. 8 V* B6 A% Q  \4 [& C: A4 D
  4. /*3 A4 a% B9 T9 w+ v5 w1 L
  5. ** BEGIN 通信相关 by phpfor.com
    % e$ J# m3 e8 Q* y
  6. ** 以下代码直接到UCenter后台相关应用里复制过来替换掉。不明白?没关系,往下面看 UCenter与PW通信具体步骤
    9 s, a; U- H: r* n& l& S# W! \- |
  7. */" m5 q1 N9 W4 y+ @7 O/ |
  8. define('UC_CONNECT', '');0 c+ o2 t; R. |# M
  9. define('UC_DBHOST', '');
    6 u8 P$ n8 c" y4 j; Z
  10. define('UC_DBUSER', '');- U1 l7 }1 ?7 L4 _7 r
  11. define('UC_DBPW', '');
    ( ^5 B; M- O2 t( i
  12. define('UC_DBNAME', '');+ {+ m( J' z0 }* @7 B( g
  13. define('UC_DBCHARSET', 'utf8');( j! R- m# W$ M
  14. define('UC_DBTABLEPRE', '');6 g8 y5 E5 g% A; K
  15. define('UC_DBCONNECT', '0');
    9 L: @% y! ]2 A. R% F1 @
  16. define('UC_KEY', ''); //这里与PW后台的保持一致
    2 H( t( g# K! z2 s7 v: A3 L' c
  17. define('UC_API', '');
    * |1 [% S, `8 ~
  18. define('UC_CHARSET', 'utf-8');
    8 W" B& u  E0 m. m
  19. define('UC_IP', '');
    $ j' ]6 x# B+ Q* ]9 x* p
  20. define('UC_APPID', '');
    . x; H+ D, Q4 F0 r( E5 i0 o% \
  21. define('UC_PPP', '');
    $ u- C+ B7 Q. S, v$ e8 ]
  22. /*  S  D* `' x& z5 P
  23. ** END
    + R' ?4 J2 K8 y4 C* G  O$ X
  24. */: P' h+ d$ ^6 p2 i* E
  25. " A# w4 e5 F7 y
  26. define('PW_URL', '您的PW论坛地址');    // 后缀不要带 / 如:http://bbs.phpfor.com& D9 y5 v- R' Q0 o" u  a. B8 d6 |
  27. define('API_RETURN_SUCCEED', '1');6 O- ?4 N7 N. b5 ?4 a
  28. define('API_RETURN_FAILED', '-1');' Z# A4 y( K. y3 k
  29. 3 ?: s7 _% ~1 w9 z% g8 g
  30. $code = $_GET['code'];+ N- \, r) u. ^
  31. if($code && include(UC_DIR.'/client.php')){
    ) ]( A, P6 w. K; `
  32.     $get = array();; Q/ j0 D; @6 k; Q
  33.     parse_str(uc_authcode($code, 'DECODE', UC_KEY), $get);
    2 Q1 s3 `3 k0 V8 ^8 g
  34.     if(empty($get)) {
    3 r$ y1 O! k* K2 D) A5 W
  35.         exit('Invalid Request');
    - g7 o" l( x" ?8 Z1 Z7 |0 D- x
  36.     }
    . \- z, b  @' d$ ~
  37.     if(time() - $get['time'] > 3600) {
    3 o- q3 A, S. ~6 I6 c8 I
  38.         exit('Authracation has expiried');0 x( ^% J0 o8 _" ^
  39.     }- n' b7 y+ C. S" g1 Z) C% S* B- y
  40.     $action = $get['action'];
    1 f/ X+ c7 P3 v
  41.     $uc_note = new uc_note();0 C: o1 [2 @% b! n- S  L. {& v) U
  42.     if(method_exists($uc_note,$action)){5 N& e6 `9 H5 _9 L# J* }& B" [) H! x/ w
  43.         $uc_note->$action($get);0 X' Q- o9 Q3 ~' j/ [# y7 D
  44.     }else{& M2 O) q( D; Q/ t: k* }+ C. R
  45.         exit(API_RETURN_FAILED);: Q* b# @8 v; J' z) E0 f
  46.     }
    $ w. h3 t: K1 ~) c: G
  47. }' @# ^, P( p: }: X" ~% l

  48. 2 l$ B  @9 L" T) N

  49. 4 r7 W( U% j6 L/ C8 z
  50. ; T5 _0 L1 x( d' B/ L
  51. class uc_note{  ~/ {% i3 K- w: t# c

  52. " Y1 |3 N) `% y$ k1 h
  53.     function synlogin($get) {/ C3 X  M6 {! }% q$ K6 P
  54.         $userdb = array(   
    + [6 r* e6 U; t8 i" R* ?3 w  J
  55.                     'username'    => $get['username'],
    # u& l* e. z- L0 ?8 C1 H$ T
  56.                     'password'    => $get['password'],
    1 }( t% [* q! t( d: T
  57.                     'email'        => $get['email'],
    * p: ^$ x7 L$ A6 q3 C
  58.                     'time'        => time(),
    : K. q/ H5 z& X
  59.                     );7 F0 w. L( R$ G
  60.         $this->passport('login',$userdb);8 O9 l1 u# L0 U* y' `
  61.     }
    6 x7 C* Z, \' d4 x9 P' c

  62. ' N( f/ H  `/ |8 x$ E+ Z  m
  63.     function synlogout($get){
    3 F; K* ^1 r* c8 _" K" a
  64.         $this->passport('quit','');
    4 F/ d3 Q  b! c- m' J
  65.     }
    1 B* ^! R  O. t

  66. 0 F# S9 k: D" u  z' O! v5 H
  67.     function passport($action,$userdb,$forward = ''){
    , |  ~/ C" ~9 w% g" H8 L5 y% d( ]/ u
  68.         if($action == 'login'){
    " J: C. }* f( \; Z& M. ~8 p: V. \
  69.             foreach($userdb as $key=>$val){
    % b  M; d$ R6 q7 q$ n
  70.                 $userdb_encode .= $userdb_encode ? "&$key=$val" : "$key=$val";
    - c/ ?) F& g8 x3 ]- T2 A
  71.             }
    " V4 U. U1 A) Q# Z9 O. Z
  72.         }
    + L  {& A. B, o/ T. x
  73.         $userdb_encode = str_replace('=','',$this->strCode($userdb_encode));! g( u* R2 A1 Y' |
  74.         $verify = md5($action.$userdb_encode.$forward.UC_KEY);
    6 ]0 H) q$ R. l8 E! Z
  75.         header('Location: '.PW_URL.'/passport_client.php?action='.$action.'&userdb='.rawurlencode
    / N6 L) [  p7 R
  76. ($userdb_encode).'&forward='.rawurlencode($forward).'&verify='.$verify);: s8 }% b: x" _. p
  77.         exit;
    : w  a, ]" O2 `2 d2 \+ k. Y3 S  j
  78.     }
    1 D. v, Y. h: l. f2 F$ d& x; ~

  79. / V4 z- h* O+ b. G4 x
  80.     function strCode($string,$action='ENCODE'){$ W4 t" I- F* A3 Y9 I/ G; ]
  81.         $action != 'ENCODE' && $string = base64_decode($string);% V# V" P5 z+ ~2 N
  82.         $code = '';: |$ U, y$ g6 Z; |
  83.         $key  = substr(md5($_SERVER["HTTP_USER_AGENT"].UC_KEY),8,18);7 Y  a1 A4 [# \. J
  84.         $keylen = strlen($key); $strlen = strlen($string);2 g: u* k, m" U: s/ i0 e. E$ Q
  85.         for ($i=0;$i<$strlen;$i++) {8 E! F. o/ s% H: W- ^
  86.             $k = $i % $keylen;" H* f- ^; d0 i6 E' k8 M$ F
  87.             $code  .= $string[$i] ^ $key[$k];7 q$ x* Q% z' J6 B9 D* m2 c$ K
  88.         }  F# T0 r) o) n/ B' K+ S
  89.         return ($action!='DECODE' ? base64_encode($code) : $code);
    ) c$ e  z/ L* l1 O2 {
  90.     }
    * ^  e/ e. c* U' b( _, N. `- S2 b

  91. % v1 ?+ G& m; U  O9 D, z9 K

  92. $ K4 s! p) M1 J
  93.     function test($get){
    ( _# n9 u: a& r: \2 s
  94.         exit(API_RETURN_SUCCEED);
    3 w7 v2 Q) e. O7 v
  95.     }! {% b; K) b% u
  96. }1 z" v, U8 z0 W" r
  97. 4 t' M3 o1 f* U. q
  98. 5 l  r8 k' f  S- @

  99. $ U5 |' I  p- R& F" G/ Z4 b
  100. ?>
复制代码
UCenter与PW通信具体步骤2 `3 q' g2 ^; V9 i/ v$ _
3 ]1 m5 P( }/ Z  C
1.UCenter配置1 P  }8 A; y( K( @! K
进UCenter后台->应用管理->添加新应用->自定义安装
" ^& w; {, Q$ F应用名称:PW论坛
: U- C$ K' l' T# h3 Q应用URL:PW论坛地址/ o; Q8 C0 a; P4 z
通信密钥:与PW后台 第三方整合的密钥一致- j( }8 I8 H5 `. g1 i" h2 {1 X& g
应用类型:其他) C: V) t1 Y5 q) G+ N& K
是否开启同步登录:是
' u& f2 V  d4 n是否接受通知:是
% ~% x, H4 N9 u4 s9 Y( H1 T" ]# [$ H
  v' e: f* L% s2 a然后提交,成功后复制 应用的 UCenter 配置信息:
, ~2 s: E/ F! L  {- B里面的内容 替换以上配置信息。
, E7 C7 V! }  u, u! z8 [6 i) j6 w& {. U0 M( r$ ?6 u5 i* v
2.PW配置6 O, {$ F& L# X# ]4 T
进后台->应用中心->插件管理->通行证
+ B- T0 |  D/ o2 n9 ], U2 {2 }5 C9 K' Z' D7 S
通行证:开启
# t3 z: z( s( K! L) T$ p通行证私有密钥:填UC里设置的密钥
, Q" }8 X' K- [3 N3 K" X将本系统作为:客户端
7 W6 A. L% D7 W& O5 K; l& E) j# r8 a5 @& A- h! m* f
//UC其他应用的地址都行,只要能同步登录退出。
& b# i2 D7 o) u5 ^7 i/ }! X! T通行证服务器地址:- j! d2 Y+ z5 o; l$ U4 t! P2 S
通行证登录地址:
* F) l4 D1 m% W( Q3 ^通行证退出地址:5 i# h' @. x# i7 ?# j
通行证注册地址:
: H) C- E. b8 X0 o8 }
0 |" ?) w' ~2 |  x6 M$ H0 V! r8 ~0 T此时再看应用:通信成功!
" k2 l1 f' ~" R% }  ?& i/ z* N+ U! B
!qinai!游客!yincang_youke!

: }+ \$ B; t/ P& a8 I: S
+ Q% ~2 K- B( g

全部评论 0

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