當前位置:首頁 » 編程語言 » php獲取accesstoken

php獲取accesstoken

發布時間: 2022-07-05 10:37:41

php怎麼讀取access_token的值

是對象的話直接 對象->access_token ,但是access_token必須是public的屬性

⑵ php怎麼獲取釘釘員工授權信息

做過一個E應用,使用lumen框架,和你的思路是一樣的,新用戶點進去就自動授權注冊應用,數據存到我們自己的資料庫中,不依賴釘釘,我們還同步了部門信息,如果粘貼復制和下面的那個同學一樣,看上去你也會覺得懵,方法都是封裝好了的。

建議你這樣試試看:

  1. 獲取AccessToken:

    後端通過corpid,corpsecret請求介面gettoken?corpid=id&corpsecret=secrect獲取AccessToken

  2. 獲取釘釘用戶userid:

    前端需要相應的處理,攜帶authCode請求,加上AccessToken這兩個參數請求介面/user/getuserinfo?access_token=access_token&code=authCode這個

  3. 獲取釘釘用戶詳情:

    使用access_token和上一步的釘釘userid 請求介面 /user/get?access_token=ACCESS_TOKEN&userid=

  4. 插入釘釘用戶的數據到你的 資料庫中

我們這樣做的:

/**

* 釘釘免登陸獲獲取用信息

* @param $authCode

* @param $url

* @return array

*/

static function outhLogin($authCode, $url)

{

if (empty($authCode) || empty($url)) {

return self::returnError('1101', self::$errorArray['1101']);

}

$accessToken = ComponentDingtalk::getPcAccessToken();

if ($accessToken['code']) {

self::logError(__CLASS__ . '->' . __FUNCTION__, '獲取access_token失敗');

return self::returnError('1102', self::$errorArray['1102']);

}

$dingUserId = ComponentDingtalk::getDingUserid($accessToken['data'], $authCode);

if ($dingUserId['code']) {

self::logError(__CLASS__ . '->' . __FUNCTION__, '用戶userid獲取失敗(調用釘釘API)');

return self::returnError('1103', self::$errorArray['1103']);

}

$dinguserInfo = ComponentDingtalk::getDingUserInfo($accessToken['data'], $dingUserId['data']);

if ($dinguserInfo['code']) {

self::logError(__CLASS__ . '->' . __FUNCTION__, '用戶信息獲取失敗(調用釘釘API)');

return self::returnError('1104', self::$errorArray['1004']);

}

$userInfo = $dinguserInfo['data'];

return self::transaction(function () use ($accessToken, $userInfo, $url) {

if (count($userInfo['department']) > 1) {

$departIdArr = [];

$departNameArr = [];

for ($i = 0, $iMax = count($userInfo['department']); $i < $iMax; $i++) {

$departInfo[$i] = ServerDepartment::getByDdDepartid($userInfo['department'][$i]);

$departIdArr[] = $departInfo[$i]['id'];

$departNameArr[] = $departInfo[$i]['name'];

}

$depart['id'] = implode(',', $departIdArr);

$depart['name'] = implode(',', $departNameArr);

} else {

$ddDepartmentId = implode(',', $userInfo['department']);

$depart = ServerDepartment::getByDdDepartid($ddDepartmentId);

}

//插入用戶

$user = ServerEmployee::getByDdUserid($userInfo['userid']);

if ($user && $user['status'] == 2) {

return self::returnError('1105', self::$errorArray['1105']);

}

if (empty($user)) {

$roleId = 0;

$departId = $depart['id'];

$name = $userInfo['name'];

$mobile = $userInfo['mobile'];

$departName = $depart['name'];

$position = $userInfo['position'];

$ddUserid = $userInfo['userid'];

$ddStatus = $userInfo['active'] ? 1 : 2;

$ddInfo = json_encode($userInfo, JSON_UNESCAPED_UNICODE);

$tokenOverAt = (int)(time() + $_ENV['PROJECT_apiAppTokenOverTime']);

$token = self::_createToken($userInfo['userid'], $tokenOverAt);

$status = 1;

$userId = ServerEmployee::insert($roleId, $departId, $name, $mobile, $departName, $position, $ddUserid, $ddStatus, $ddInfo, $token, $tokenOverAt, $status);

if (!$userId) {

self::logError(__CLASS__ . '->' . __FUNCTION__, '用戶初始化創建失敗');

return self::returnError('1106', self::$errorArray['1106']);

}

}

$userId = $userId ?? $user['id'];

// 更新Token

$id = $userId;

$roleId = $user['roleId'];

$departId = $depart['id'];

$name = $userInfo['name'];

$mobile = $userInfo['mobile'];

$departName = $depart['name'];

$position = $userInfo['position'];

$ddUserid = $userInfo['userid'];

$ddStatus = $userInfo['active'] ? 1 : 2;

$ddInfo = json_encode($userInfo, JSON_UNESCAPED_UNICODE);

$tokenOverAt = (int)(time() + $_ENV['PROJECT_apiAppTokenOverTime']);

$token = self::_createToken($userInfo['userid'], $tokenOverAt);

$status = 1;

$updateParams = ServerEmployee::update($id, $roleId, $departId, $name, $mobile, $departName, $position, $ddUserid, $ddStatus, $ddInfo, $token, $tokenOverAt, $status);

if (!$updateParams) {

self::logError(__CLASS__ . '->' . __FUNCTION__, '用戶信息更新失敗' . json_encode($updateParams, JSON_UNESCAPED_UNICODE) . '/' . json_encode([$id, $roleId, $departId, $name, $mobile, $depart, $position, $ddUserid, $ddStatus, $ddInfo, $token, $tokenOverAt, $status]));

return self::returnError('1107', self::$errorArray['1107']);

}

// 前端的配置信息

// 獲取jsTicket

$jsTicket = ComponentDingtalk::getPcJsTicket($accessToken['data']);

if ($jsTicket['code']) {

self::logError(__CLASS__ . '->' . __FUNCTION__, '獲取jsTicket失敗(調用釘釘API)');

return self::returnError('1111', self::$errorArray['1111']);

}

// 組裝簽名數據

$curUrl = $url;;

$nonceStr = uniqid('', true);

$agentId = $_ENV['PROJECT_ddInterfaceAgentID'];

$timeStamp = time();

$corpId = $_ENV['PROJECT_ddInterfaceCorpId'];

$signature = ComponentDingtalk::getSign($jsTicket['data'], $nonceStr, $timeStamp, $curUrl);

$config = array(

'url' => urldecode($curUrl),

'nonceStr' => $nonceStr,

'agentId' => $agentId,

'timeStamp' => $timeStamp,

'corpId' => $corpId,

'signature' => $signature

);

// 獲取當前角色的許可權

$roleInfo = ServerRole::getById($roleId);


// 當前用戶的頂級部門(不含根部門)

$departInfo = ServerDepartment::getById($departId);

if ($departInfo['parentid'] == 1) { // 二級部門(總經辦)

$departRootId = $departId;

$departRootName = $departName;

} else {

$sonDepart = ServerDepartment::getById($departInfo['parentid']);//分組

if ($sonDepart['parentid'] == 1) {

$departRootId = $sonDepart['id'];

$departRootName = $sonDepart['name'];

} else {

$grandsonDepart = ServerDepartment::getById($sonDepart['parentid']);//部門

if ($grandsonDepart['parentid'] == 1) {

$departRootId = $grandsonDepart['id'];

$departRootName = $grandsonDepart['name'];

} else {

$grandchildDepart = ServerDepartment::getById($grandsonDepart['parentid']);//分公司

$departRootId = $grandchildDepart['id'];

$departRootName = $grandchildDepart['name'];

}

}

}

$company = ServerDepartment::get(['parentid' => 0, 'dd_departid' => 1]);


return self::returnSuccess(array(

'id' => $userId,

'name' => $name,

'token' => $token,

'tokenOverAt' => $tokenOverAt,

'config' => $config,

'power' => $roleInfo['power'] ?? '',

'departId' => $departId,

'departName' => $departName,

'departRootId' => $departRootId,

'departRootName' => $departRootName,

'company' => $company['name'],


));

}, function (Exception $e) {

echo $e->getMessage();

self::logError(__CLASS__ . '->' . __FUNCTION__, $e->getMessage());

return self::returnError('1108', self::$errorArray['1108']);

});

}

⑶ access token怎麼獲取

1、獲取access_token需要的微信公眾平台是認證過的訂閱號或者服務號;
2、登錄微信公眾平台,點擊左側開發者中心,記下AppId和AppSecret;
3、在開發者中心頁下面,點擊進入在線介面調試工具;
4、填寫好appid和appsecret,介面列表選擇獲取access_token介面
/token,然後點擊檢查問題;
5、返回結果那裡會出現你想要的access_token。

⑷ 如何獲取accessToken

通過用戶驗證登錄和授權,獲取Access Token,為下一步獲取用戶的OpenID做准備; 同時,Access Token是應用在調用OpenAPI訪問和修改用戶數據時必須傳入的參數。 access token由每次用戶登錄時生成,過期時間默認為三個月,用戶再次登錄時自動刷新,請網站或應用做好防過期策略,或過期後提示用戶再次授權。 OAuth2.0針對網站接入,提供了登錄驗證和授權流程,主要提供以下獲取access token的方式: 1. server-side模式 即OAuth官方文檔中提到的Authorization Code模式,適用於需要從web server訪問的應用。 2. client-side模式 即OAuth官方文檔中提到的Implicit模式,適用於需要通過客戶端訪問的方式。 以上兩種模式僅在獲取access_token時有所區別,後續獲取openid、調用API等方式均相同

⑸ 如何獲取accessToken

通過用戶驗證登錄和授權,獲取Access Token,為下一步獲取用戶的OpenID做准備;
同時,Access Token是應用在調用OpenAPI訪問和修改用戶數據時必須傳入的參數。
access token由每次用戶登錄時生成,過期時間默認為三個月,用戶再次登錄時自動刷新,請網站或應用做好防過期策略,或過期後提示用戶再次授權。

OAuth2.0針對網站接入,提供了登錄驗證和授權流程,主要提供以下獲取access token的方式:
1. server-side模式
即OAuth官方文檔中提到的Authorization Code模式,適用於需要從web server訪問的應用。

2. client-side模式
即OAuth官方文檔中提到的Implicit模式,適用於需要通過客戶端訪問的方式。

以上兩種模式僅在獲取access_token時有所區別,後續獲取openid、調用API等方式均相同。

⑹ php獲取微信token的是什麼格式的

access_token是公眾號的全局唯一票據,公眾號調用各介面時都需使用access_token。開發者需要進行妥善保存。
access_token的存儲至少要保留512個字元空間。access_token的有效期目前為2個小時,需定時刷新,重復獲取將導致上次獲取的
access_token失效。
access_token的獲取:
<?php

define("APPID", "您的appid");
define("APPSECRET", "您的appsecret ");

$token_access_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" . APPID . "&secret=" . APPSECRET;
$res = file_get_contents($token_access_url); //獲取文件內容或獲取網路請求的內容
//echo $res;
$result = json_decode($res, true); //接受一個 JSON 格式的字元串並且把它轉換為 PHP 變數
$access_token = $result['access_token'];
echo $access_token;

php>

⑺ 如何獲取accessToken

通過用戶驗證登錄和授權,獲取Access Token,為下一步獲取用戶的OpenID做准備;
同時,Access Token是應用在調用OpenAPI訪問和修改用戶數據時必須傳入的參數。
access token由每次用戶登錄時生成,過期時間默認為三個月,用戶再次登錄時自動刷新,請網站或應用做好防過期策略,或過期後提示用戶再次授權。

OAuth2.0針對網站接入,提供了登錄驗證和授權流程,主要提供以下獲取access token的方式:
1. server-side模式
即OAuth官方文檔中提到的Authorization Code模式,適用於需要從web server訪問的應用。

2. client-side模式
即OAuth官方文檔中提到的Implicit模式,適用於需要通過客戶端訪問的方式。

以上兩種模式僅在獲取access_token時有所區別,後續獲取openid、調用API等方式均相同。

⑻ PHP獲取 微信access token 連接被重置

可能你的代碼涉及到了php5.3的新增特性~
比如5.3以上版本才支持 命名空間namespace,但5.3以下版本是不支持的,建議安裝相同的伺服器環境

⑼ access_token 怎麼獲取

微信公眾平台開發的時候會用到access_token,如:添加自定義菜單的時候需要用到access_token。

工具:微信公眾平台認證過的訂閱號或者服務號

步驟:

1、登錄微信公眾平台,點擊左側開發者中心。

熱點內容
滑板鞋腳本視頻 發布:2025-02-02 09:48:54 瀏覽:433
群暉怎麼玩安卓模擬器 發布:2025-02-02 09:45:23 瀏覽:557
三星安卓12彩蛋怎麼玩 發布:2025-02-02 09:44:39 瀏覽:744
電腦顯示連接伺服器錯誤 發布:2025-02-02 09:24:10 瀏覽:537
瑞芯微開發板編譯 發布:2025-02-02 09:22:54 瀏覽:147
linux虛擬機用gcc編譯時顯示錯誤 發布:2025-02-02 09:14:01 瀏覽:240
java駝峰 發布:2025-02-02 09:13:26 瀏覽:652
魔獸腳本怎麼用 發布:2025-02-02 09:10:28 瀏覽:538
linuxadobe 發布:2025-02-02 09:09:43 瀏覽:212
sql2000資料庫連接 發布:2025-02-02 09:09:43 瀏覽:726