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

PW8 For UCenter API 接口

来自版块: 站长杂谈发表于: 2015-8-8 05:14:48
36114
0
如本资源下载地址失效,请点击此处进行反馈
开通本站Svip会员,全站资源免费下
适用版本:        phpwind8.0
9 T8 j4 x, `) @* x" {语言编码:        GBK简体 UTF8简体 . C! J: P7 a8 e: |. H$ `
发现很多朋友操作不成功基本都是因为与UCenter的通信不成功,所以请先确保UCenter与PW的 api/uc.php 通信成功,再按我的教程操作,否则无效。0 ^8 C9 Z! `4 V  s
2 g; Z0 [  |. d# J" F: [/ s, e/ d1 F
昨天推出巧《用PW8的接口整合UCenter》教程后,引起了很多朋友的关注与支持,有的朋友按照教程实现了PW与UCenter的整合,但还有大部分朋友不太明白。比如:
( l2 I) N1 C! i6 H1 f+ d; G- D: S/ {4 \" p. }
有很多朋友问我如何做到PW目录下的api/uc.php 与 UCenter保持通信成功?
1 G5 Y) `1 p+ A: R5 }还有的朋友说希望能给下uc.php的完整代码。
' U" r$ E( G9 W2 I- f& H5 \+ X- d( J1 r* ]' R
插件在附件中,下面是教学部分
( [3 R/ z# ]* L6 U& G5 q) _* v6 [# G4 j6 q. l( c
下面,我们就来进行实例操作。
! b! u0 G; H0 F% ]+ p5 n
$ s) b& B9 h& _6 E首先上传uc_client 文件夹到PW的根目录,你可能要问PW目录下不是有一个uc_client么?我要说的是,直接删除掉,那个没用。uc_client 文件夹在UCenter安装包里可以找到,这里就不再赘述。
/ @: F2 D  K3 y8 a" L8 |0 p# z! i2 {
" o& R6 |% \* I3 s复制以下代码并修改相关参数:
0 ~/ _! u, `. N( E- N5 S) ~
  1. <?php
    7 u0 y3 K) U$ Z! x+ l, @3 e3 R
  2. define('UC_DIR','../uc_client');
      m  v! u6 a  p+ o: ]8 ~7 E, [

  3. 2 y& T5 D: c# s2 {) }
  4. /*
    2 d5 j4 W0 y' T& P& m
  5. ** BEGIN 通信相关 by phpfor.com/ K  V& c7 f! I% O
  6. ** 以下代码直接到UCenter后台相关应用里复制过来替换掉。不明白?没关系,往下面看 UCenter与PW通信具体步骤- {/ z$ p- E3 E& ^' N. y2 j
  7. */
    ' e1 k# U* Q  @; r; B; e
  8. define('UC_CONNECT', '');
    ' O0 K) G, M* r$ q, N: J! l$ b
  9. define('UC_DBHOST', '');6 |0 w  V0 h+ k- @! a1 c
  10. define('UC_DBUSER', '');
    9 v( H- K: v$ @: m7 h
  11. define('UC_DBPW', '');, c" i% k+ g  M8 D8 W! q  {
  12. define('UC_DBNAME', '');
    1 a: l( l* U: j1 _7 _  A
  13. define('UC_DBCHARSET', 'utf8');
    8 h9 Q# d$ ^. T( {" K5 Q' ?
  14. define('UC_DBTABLEPRE', '');
    0 p. c2 ?9 }& U$ d, Y+ T4 e
  15. define('UC_DBCONNECT', '0');  |* F5 v! L5 w, j" x+ c0 ^! L6 r
  16. define('UC_KEY', ''); //这里与PW后台的保持一致
    , g, ?4 l) A8 e. v5 C, N
  17. define('UC_API', '');
    ) P" x1 l9 X# ]( ^
  18. define('UC_CHARSET', 'utf-8');# h# g. Z' G* ?
  19. define('UC_IP', '');; H3 b6 W' y1 G5 k4 h. `* d3 m
  20. define('UC_APPID', '');
    " h" |" d5 g% y
  21. define('UC_PPP', '');
    ) \: X! M# j# ]0 d1 C
  22. /*
    2 ]: m7 d2 Y, e
  23. ** END
    ) `  s) g$ k6 J/ _
  24. */% R" C( r% e) x
  25. ' A% x3 M- U% D0 ]; v
  26. define('PW_URL', '您的PW论坛地址');    // 后缀不要带 / 如:http://bbs.phpfor.com( H/ v) p$ a' r% G9 f
  27. define('API_RETURN_SUCCEED', '1');
    9 f: }1 Q  ]( t7 l6 K+ h; Z
  28. define('API_RETURN_FAILED', '-1');
    8 M  {1 k6 K& F# S# F! S
  29. & u/ f2 n" B- d- d) O
  30. $code = $_GET['code'];
      Q4 H& R( B7 W/ ~4 j6 F% O
  31. if($code && include(UC_DIR.'/client.php')){
    5 t6 r; @6 r3 W/ R
  32.     $get = array();
    ' ^% K1 o7 ~) a4 Z
  33.     parse_str(uc_authcode($code, 'DECODE', UC_KEY), $get);
      U: e2 ^7 ?8 T# ~4 |: V/ U0 g: ^8 u
  34.     if(empty($get)) {  x2 @  n8 w7 Z0 c* o- ~
  35.         exit('Invalid Request');8 y; {# F; y, x- j+ Z9 ^  b
  36.     }
    , u! l/ `  Z2 |# i
  37.     if(time() - $get['time'] > 3600) {
    6 G- ]8 h- v( r5 P6 E- ]- q
  38.         exit('Authracation has expiried');, ?7 a* S7 L6 m
  39.     }8 y1 U! G* u, C' [6 d, v8 f7 k2 c
  40.     $action = $get['action'];  c3 Y3 I$ O8 n, j7 u' R2 Z, d" F
  41.     $uc_note = new uc_note();
    ) c7 U8 a2 c# i9 [- T
  42.     if(method_exists($uc_note,$action)){' r7 q: ~! H% O5 u1 J, K0 a& u
  43.         $uc_note->$action($get);1 c4 P/ o( y. n( V7 P/ z
  44.     }else{( ~8 C3 h) {5 l# r
  45.         exit(API_RETURN_FAILED);
      d+ X- T0 q/ a6 c+ X4 R* [. `
  46.     }
    & z' i  b$ D: C9 T+ i) g
  47. }) G! c( _  U+ g* Y  X9 r

  48. , W7 i0 E4 n/ ?: y3 S3 U& R
  49. + e) Y; e+ u+ v3 }0 q
  50. ; J6 |  I/ K( k7 a# ]
  51. class uc_note{
      S: z  C+ J( \
  52. ( u1 T6 w6 d2 ]6 r$ \
  53.     function synlogin($get) {
    ) s! i& {2 x9 @/ c- x& u& L
  54.         $userdb = array(   1 ]1 j6 `) X3 |0 P9 s; C
  55.                     'username'    => $get['username'],8 _) k  w+ S2 e
  56.                     'password'    => $get['password'], / c5 E4 t! n' q2 G: S
  57.                     'email'        => $get['email'],
    / X# w* N2 z- B& H+ H& h
  58.                     'time'        => time(),/ M, V9 N. H1 b- Q& {0 j) X
  59.                     );. R6 f, Z- A2 _0 x1 L/ l0 Y
  60.         $this->passport('login',$userdb);# Z: }3 `' [# H$ @- g
  61.     }1 p4 z# {$ y5 c, V8 k, \5 m

  62. 6 B4 D" L+ d$ `9 H3 Y# A
  63.     function synlogout($get){, W  E. m& @! M' D) f! S* b
  64.         $this->passport('quit','');
    ; l1 Z  N: f  y
  65.     }
    # K4 ^& _$ `/ E
  66. 9 p/ G# o4 v, r( X
  67.     function passport($action,$userdb,$forward = ''){- s) V. h) L- B
  68.         if($action == 'login'){/ |) Q: c! ]+ L4 \" v6 Z- \
  69.             foreach($userdb as $key=>$val){. L4 D% A$ K+ u1 J7 V
  70.                 $userdb_encode .= $userdb_encode ? "&$key=$val" : "$key=$val";! y" Q5 k: t8 [  y
  71.             }5 s9 |5 [  {! l$ B
  72.         }
    3 F- I( e  q1 V
  73.         $userdb_encode = str_replace('=','',$this->strCode($userdb_encode));; x1 d1 f' s/ l  Q8 o
  74.         $verify = md5($action.$userdb_encode.$forward.UC_KEY);' c1 d& \7 O  k: N, t- a, v
  75.         header('Location: '.PW_URL.'/passport_client.php?action='.$action.'&userdb='.rawurlencode6 m7 H7 y# @4 U' \
  76. ($userdb_encode).'&forward='.rawurlencode($forward).'&verify='.$verify);
    . P3 |% ]  N' N: ]6 l( x
  77.         exit;
    0 c, J& |  _2 B
  78.     }
    # m/ I+ Y! ~0 B' R  ~
  79. 5 m' `$ w! ?/ H4 ]3 T
  80.     function strCode($string,$action='ENCODE'){
    , e6 S( S& F2 U7 N# s
  81.         $action != 'ENCODE' && $string = base64_decode($string);
    1 H1 H* k* Y1 g! U3 _% q
  82.         $code = '';+ D: d2 y7 t6 b* E# d0 E( j
  83.         $key  = substr(md5($_SERVER["HTTP_USER_AGENT"].UC_KEY),8,18);2 M, `) b2 Q) f2 e) k$ B3 X, Y
  84.         $keylen = strlen($key); $strlen = strlen($string);# d/ {8 P7 \& e3 Q0 ]4 X, v+ l
  85.         for ($i=0;$i<$strlen;$i++) {/ e) R" d: R/ I; C, G
  86.             $k = $i % $keylen;$ \; ]# o; R* \7 D# a3 H" H, a
  87.             $code  .= $string[$i] ^ $key[$k];
    ' L& Q$ h5 T5 E, E% Z$ ^# i
  88.         }  C, A  U, j5 j& g6 ~  m
  89.         return ($action!='DECODE' ? base64_encode($code) : $code);# p1 g: M" I& w* x
  90.     }
    , @7 `/ F5 ~0 B  M: ]
  91. ; H0 B# l% Y+ X5 V7 B# [& ]
  92. $ g+ E) R" T7 l; I8 B: G1 i: [+ d
  93.     function test($get){7 t* a9 ^+ l( L, l
  94.         exit(API_RETURN_SUCCEED);
    9 j& T) u1 _$ \0 E+ m# U; d( n
  95.     }% [) \& c' v+ n, W/ ]6 y/ H  P
  96. }
    ; x* t' t+ L3 q. K; y0 A! Q6 |2 |

  97. % p  u+ n; }& [

  98. 1 O6 w# y1 @7 M, e% H

  99. 6 n( k- `. {! @' E8 x
  100. ?>
复制代码
UCenter与PW通信具体步骤
' O% \* B( Y% S' C! x
1 i7 N: N" M. K9 y) P7 i0 i, k& q2 m9 g- }+ n1.UCenter配置- v- |) R+ J5 ]! Z" E9 B4 W8 ?
进UCenter后台->应用管理->添加新应用->自定义安装
% U7 ~% }- c- z* F" n, C应用名称:PW论坛, ]+ w% \; R5 g
应用URL:PW论坛地址- V% X0 T( _8 v- W0 F% H) q
通信密钥:与PW后台 第三方整合的密钥一致
( b  H: N' M" m8 E8 z: J7 m0 b应用类型:其他% A6 t9 }6 Y* o/ r) J; n5 k
是否开启同步登录:是
% ^$ B+ _# W. N+ y4 Y* h: C是否接受通知:是. U2 [  Q3 w% U0 W9 D7 v& [) C/ r

/ \4 q* j# ^' _' V* {然后提交,成功后复制 应用的 UCenter 配置信息:
% L! J" M- _) l  f2 ^里面的内容 替换以上配置信息。( J; v5 z+ H6 a  C

5 Y8 |: U$ g; c2.PW配置& z+ t  A! H& G3 M: R
进后台->应用中心->插件管理->通行证3 h, |( W0 g9 m5 e0 Z! X/ X
1 A* T! Q4 M) _5 |9 N3 Q+ T( Y8 C
通行证:开启' {$ s5 e9 p" U0 Z5 ?
通行证私有密钥:填UC里设置的密钥
8 j* T$ j2 Q" W将本系统作为:客户端
& q& @, i# w3 j1 @3 I
* f5 O& D% L+ i//UC其他应用的地址都行,只要能同步登录退出。
) P8 P) E' k0 p' h3 Y1 ]2 W, [# @通行证服务器地址:
* v: }9 Q% Z+ ]6 A通行证登录地址:
7 K9 `1 X- u7 z, m# {; K& o通行证退出地址:
" F9 D  D2 ]. S3 J4 H& l1 ]1 n$ h通行证注册地址:
3 h+ i( D$ G: z, a* V, F
! y- j# C; ]  y# V- W此时再看应用:通信成功!7 p' D  O9 L; Y. N
!qinai!游客!yincang_youke!
- p% v* V, _0 t& R

' [$ I. O3 A! h

全部评论 0

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