久久久久av_欧美日韩一区二区在线_国产精品三区四区_日韩中字在线

12下一頁(yè)
返回列表 發(fā)帖
查看: 2284|回復(fù): 13

[已解決] Discuz! 3.5 的 UCenter 接口返回 Access denied for operation changed

5

主題

17

回帖

24

積分

初學(xué)乍練

貢獻(xiàn)
0 點(diǎn)
金幣
1 個(gè)
樓主
發(fā)表于 2023-3-26 23:14:20 | 只看樓主 |倒序?yàn)g覽 |閱讀模式
3.4 的接口可以正常返回,3.5 同樣的代碼就出現(xiàn)了 Access denied for operation changed。


另外有沒(méi)有比較清晰的 UCenter 的接口文檔,我是 Java 開(kāi)發(fā)者,用的是別人比較老的調(diào)用接口的代碼,很不好調(diào)試。

感謝知道的朋友們的回復(fù)!
1 貢獻(xiàn)+1 金幣

最佳答案

如果你手頭已經(jīng)有能用的老代碼那就好辦了,否則光是接口參數(shù)的加密就夠你頭疼一陣子的。
這接口大概是這么個(gè)編碼流程:
1. 先對(duì)參數(shù)做url編碼,大致就是變成a=b&c=d這種格式
2. (出于安全考慮新增的,x3.4可能沒(méi)有)參數(shù)后面追加&m=module&a=action&appid=UC_APPID,比方說(shuō)登錄環(huán)節(jié),module就是user action就是login
3. 后面再追加&agent=UA的MD5,&time=時(shí)間戳
4. 用Discuz自家的authcode加密算法(通常是一個(gè)函數(shù)實(shí)現(xiàn),如果你原本有代碼這里應(yīng)該有這個(gè)東西)對(duì)上述字符串加密,密鑰為UC_KEY,加密完了用urlencode編碼
5. 將加密以后的東西嵌入這串參數(shù)里面 m=module&a=action&inajax=2&release=UC_CLIENT_RELEASE&input=上一步的內(nèi)容&appid=UC_APPID
6. 上述參數(shù)即為最終POST到接口的東西,記得Content-Type: application/x-www-form-urlencoded。因?yàn)橐呀?jīng)encode過(guò)了所以直接發(fā)就行了。

你對(duì)照著這套邏輯看看你已有的原版代碼,看懂以后把缺少的部分補(bǔ)上應(yīng)該就能用了。
回復(fù)

使用道具 舉報(bào)

5

主題

17

回帖

24

積分

初學(xué)乍練

貢獻(xiàn)
0 點(diǎn)
金幣
1 個(gè)
沙發(fā)
 樓主| 發(fā)表于 2023-3-26 23:17:11 | 只看Ta
補(bǔ)充:我找到了接口文檔的地址:https://help.v2my.com/UCenter/api/api_index.htm。

但是我是 Java 開(kāi)發(fā)者,我想知道調(diào)用什么接口,什么請(qǐng)求方式,傳遞哪些參數(shù),哪些參數(shù)應(yīng)該怎么編碼,PHP 的示例代碼看不懂。哪里有比較清晰的文檔,告訴我調(diào)用的規(guī)則。謝謝知道的朋友!

回復(fù)

使用道具 舉報(bào)

12

主題

1655

回帖

2814

積分

Giter

貢獻(xiàn)
151 點(diǎn)
金幣
362 個(gè)
板凳
發(fā)表于 2023-3-27 00:40:31 | 只看Ta
如果你手頭已經(jīng)有能用的老代碼那就好辦了,否則光是接口參數(shù)的加密就夠你頭疼一陣子的。
這接口大概是這么個(gè)編碼流程:
1. 先對(duì)參數(shù)做url編碼,大致就是變成a=b&c=d這種格式
2. (出于安全考慮新增的,x3.4可能沒(méi)有)參數(shù)后面追加&m=module&a=action&appid=UC_APPID,比方說(shuō)登錄環(huán)節(jié),module就是user action就是login
3. 后面再追加&agent=UA的MD5,&time=時(shí)間戳
4. 用Discuz自家的authcode加密算法(通常是一個(gè)函數(shù)實(shí)現(xiàn),如果你原本有代碼這里應(yīng)該有這個(gè)東西)對(duì)上述字符串加密,密鑰為UC_KEY,加密完了用urlencode編碼
5. 將加密以后的東西嵌入這串參數(shù)里面 m=module&a=action&inajax=2&release=UC_CLIENT_RELEASE&input=上一步的內(nèi)容&appid=UC_APPID
6. 上述參數(shù)即為最終POST到接口的東西,記得Content-Type: application/x-www-form-urlencoded。因?yàn)橐呀?jīng)encode過(guò)了所以直接發(fā)就行了。

你對(duì)照著這套邏輯看看你已有的原版代碼,看懂以后把缺少的部分補(bǔ)上應(yīng)該就能用了。
回復(fù) 1

使用道具 舉報(bào)

5

主題

17

回帖

24

積分

初學(xué)乍練

貢獻(xiàn)
0 點(diǎn)
金幣
1 個(gè)
地板
 樓主| 發(fā)表于 2023-3-27 09:54:39 | 只看Ta
專家 發(fā)表于 2023-3-27 00:40
如果你手頭已經(jīng)有能用的老代碼那就好辦了,否則光是接口參數(shù)的加密就夠你頭疼一陣子的。
這接口大概是這么 ...

感謝專家這么快速的回復(fù),我試一下。如果可以的話,我會(huì)給您的回復(fù)「設(shè)置為最佳答案」。如果還有問(wèn)題,我會(huì)在這里描述清楚,再次表示感謝。
回復(fù)

使用道具 舉報(bào)

5

主題

17

回帖

24

積分

初學(xué)乍練

貢獻(xiàn)
0 點(diǎn)
金幣
1 個(gè)
5#
 樓主| 發(fā)表于 2023-3-27 10:16:11 | 只看Ta
秋天的訴說(shuō) 發(fā)表于 2023-3-27 09:54
感謝專家這么快速的回復(fù),我試一下。如果可以的話,我會(huì)給您的回復(fù)「設(shè)置為最佳答案」。如果還有問(wèn)題,我 ...

「如果可以」的意思是「如果按照您的方法最后調(diào)通(可以)」。我本來(lái)想點(diǎn)「設(shè)置為最佳答案」的,點(diǎn)了以后彈窗提示我,需要驗(yàn)證成功以后再點(diǎn)。
回復(fù)

使用道具 舉報(bào)

5

主題

17

回帖

24

積分

初學(xué)乍練

貢獻(xiàn)
0 點(diǎn)
金幣
1 個(gè)
6#
 樓主| 發(fā)表于 2023-3-29 14:41:47 | 只看Ta
只需要按照「專家」說(shuō)的第 2 點(diǎn)就可以了。
回復(fù)

使用道具 舉報(bào)

0

主題

6

回帖

14

積分

初學(xué)乍練

貢獻(xiàn)
0 點(diǎn)
金幣
7 個(gè)
7#
發(fā)表于 2023-6-23 09:18:02 | 只看Ta
專家 發(fā)表于 2023-3-27 00:40
如果你手頭已經(jīng)有能用的老代碼那就好辦了,否則光是接口參數(shù)的加密就夠你頭疼一陣子的。
這接口大概是這么 ...

請(qǐng)問(wèn)加密參數(shù)應(yīng)該怎么操作?已經(jīng)讓我頭疼一整子了
回復(fù)

使用道具 舉報(bào)

12

主題

1655

回帖

2814

積分

Giter

貢獻(xiàn)
151 點(diǎn)
金幣
362 個(gè)
8#
發(fā)表于 2023-6-23 22:08:17 | 只看Ta
D布丁233 發(fā)表于 2023-6-23 09:18
請(qǐng)問(wèn)加密參數(shù)應(yīng)該怎么操作?已經(jīng)讓我頭疼一整子了

如果你用的是php,那么直接在Discuz里尋找authcode這個(gè)函數(shù)使用即可。
但如果你用的是別的語(yǔ)言,那么你必須用對(duì)應(yīng)的語(yǔ)言重新實(shí)現(xiàn)一遍這個(gè)函數(shù)。
當(dāng)然了,由于Discuz的運(yùn)用非常廣泛,這個(gè)重新實(shí)現(xiàn)的事情有較大概率有人曾經(jīng)做過(guò),如果你能找到,那就不用自己做了。
回復(fù)

使用道具 舉報(bào)

0

主題

1

回帖

6

積分

初學(xué)乍練

貢獻(xiàn)
0 點(diǎn)
金幣
5 個(gè)
9#
發(fā)表于 2023-6-27 10:54:12 | 只看Ta
秋天的訴說(shuō) 發(fā)表于 2023-3-29 14:41
只需要按照「專家」說(shuō)的第 2 點(diǎn)就可以了。

您好,請(qǐng)問(wèn)一下是如何解決的?我在3.5版本也遇到同樣的問(wèn)題。期待您的回答,謝謝
回復(fù)

使用道具 舉報(bào)

0

主題

5

回帖

10

積分

初學(xué)乍練

貢獻(xiàn)
0 點(diǎn)
金幣
5 個(gè)
10#
發(fā)表于 2025-5-12 15:52:53 | 只看Ta
  1. public String ucApiPost(String module, String action, Map<String, Object> arg) {
  2.         StringBuffer s = new StringBuffer();
  3.         String sep = "";
  4.         //foreach(arg as k => v) {
  5.         for (String k : arg.keySet()) {
  6.             //k = (k);
  7.             Object v = arg.get(k);
  8.             k = urlencode(k);

  9.             if (v.getClass().isAssignableFrom(Map.class)) {
  10.                 String s2 = "";
  11.                 String sep2 = "";
  12.                 //foreach(v as k2 => v2) {
  13.                 for (String k2 : ((Map<String, Object>) v).keySet()) {
  14.                     Object v2 = ((Map<String, Object>) v).get(k2);
  15.                     k2 = urlencode(k2);
  16.                     s2 += sep2 + "{" + k + "}[" + k2 + "]=" + urlencode(ucStripslashes(String.valueOf(v2)));
  17.                     sep2 = "&";
  18.                 }
  19.                 s.append(sep).append(s2);
  20.             } else {
  21.                 s.append(sep).append(k).append("=").append(urlencode(ucStripslashes(String.valueOf(v))));
  22.             }
  23.             sep = "&";
  24.         }
  25.         String postdata = ucApiRequestdata(module, action, s.toString(), "");
  26.         return ucFopen2(UC_API + "/index.php", 500000, postdata, "", true, UC_IP, 20, true);
  27. //        return ucFopen2(UC_API, 500000, postdata, "", true, UC_IP, 20, true);
  28.     }


  29.     /**
  30.      * 構(gòu)造發(fā)送給用戶中心的請(qǐng)求數(shù)據(jù)
  31.      *
  32.      * @param module 請(qǐng)求的模塊
  33.      * @param action 請(qǐng)求的動(dòng)作
  34.      * @param arg    參數(shù)(會(huì)加密的方式傳送)
  35.      * @param extra  附加參數(shù)(傳送時(shí)不加密)
  36.      * @return string
  37.      */
  38.     protected String ucApiRequestdata(String module, String action, String arg, String extra) {
  39.         String input = ucApiInput(arg, module, action);
  40.         String post = "m=" + module + "&a=" + action + "&inajax=2&release=" + UC_CLIENT_RELEASE + "&input=" + input + "&appid=" + UC_APPID + extra;
  41.         return post;
  42.     }

  43.     protected String ucApiUrl(String module, String action, String arg, String extra) {
  44.         String url = UC_API + "/index.php?" + ucApiRequestdata(module, action, arg, extra);
  45.         return url;
  46.     }

  47.     public String ucApiInput(String data, String module, String action) {
  48.         data = data + "&m="+ module + "&a=" + action + "&appid=" + UC_APPID;
  49.         //String s = data;
  50.         //String s = urlencode(uc_authcode(data+"&agent="+md5(_SERVER["HTTP_USER_AGENT"])+"&time="+time(), "ENCODE", UC_KEY));
  51.         String s = urlencode(ucAuthcode(data + "&agent=" + md5(HTTP_USER_AGENT) + "&time=" + time(), "ENCODE", UC_KEY));
  52.         //String s = urlencode(ucAuthcode(data + "&agent=" + md5("") + "&time=" + time(), "ENCODE", UC_KEY));
  53.         return s;
  54.     }
復(fù)制代碼

我的版本是3.5的discuz,ucenter2.0,也不報(bào)這個(gè)錯(cuò),client代碼中,也都按照“專家”的步驟實(shí)現(xiàn)了。搞不懂哪里的問(wèn)題了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

  • 關(guān)注公眾號(hào)
  • 有償服務(wù)微信
  • 有償服務(wù)QQ

手機(jī)版|小黑屋|Discuz! 官方交流社區(qū) ( 皖I(lǐng)CP備16010102號(hào) |皖公網(wǎng)安備34010302002376號(hào) )|網(wǎng)站地圖|star

GMT+8, 2025-9-18 19:31 , Processed in 0.085159 second(s), 29 queries .

Powered by Discuz! W1.0 Licensed

Copyright © 2001-2025 Discuz! Team.

關(guān)燈 在本版發(fā)帖
有償服務(wù)QQ
有償服務(wù)微信
返回頂部
快速回復(fù) 返回頂部 返回列表