pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

    1. <i id='6wlUu'><tr id='6wlUu'><dt id='6wlUu'><q id='6wlUu'><span id='6wlUu'><b id='6wlUu'><form id='6wlUu'><ins id='6wlUu'></ins><ul id='6wlUu'></ul><sub id='6wlUu'></sub></form><legend id='6wlUu'></legend><bdo id='6wlUu'><pre id='6wlUu'><center id='6wlUu'></center></pre></bdo></b><th id='6wlUu'></th></span></q></dt></tr></i><div class="mymiwie" id='6wlUu'><tfoot id='6wlUu'></tfoot><dl id='6wlUu'><fieldset id='6wlUu'></fieldset></dl></div>
    2. <small id='6wlUu'></small><noframes id='6wlUu'>

      <legend id='6wlUu'><style id='6wlUu'><dir id='6wlUu'><q id='6wlUu'></q></dir></style></legend>
          <bdo id='6wlUu'></bdo><ul id='6wlUu'></ul>
      1. <tfoot id='6wlUu'></tfoot>

        為什么我的 twitter oauth 訪問令牌無效/過期

        Why is my twitter oauth access token invalid / expired(為什么我的 twitter oauth 訪問令牌無效/過期)

        <small id='EcaBp'></small><noframes id='EcaBp'>

        • <tfoot id='EcaBp'></tfoot>
            <tbody id='EcaBp'></tbody>
              <legend id='EcaBp'><style id='EcaBp'><dir id='EcaBp'><q id='EcaBp'></q></dir></style></legend>
                <bdo id='EcaBp'></bdo><ul id='EcaBp'></ul>
                  <i id='EcaBp'><tr id='EcaBp'><dt id='EcaBp'><q id='EcaBp'><span id='EcaBp'><b id='EcaBp'><form id='EcaBp'><ins id='EcaBp'></ins><ul id='EcaBp'></ul><sub id='EcaBp'></sub></form><legend id='EcaBp'></legend><bdo id='EcaBp'><pre id='EcaBp'><center id='EcaBp'></center></pre></bdo></b><th id='EcaBp'></th></span></q></dt></tr></i><div class="uaw0sci" id='EcaBp'><tfoot id='EcaBp'></tfoot><dl id='EcaBp'><fieldset id='EcaBp'></fieldset></dl></div>
                  本文介紹了為什么我的 twitter oauth 訪問令牌無效/過期的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

                  問題描述

                  我正在使用 Twitter 將用戶登錄到一個網站,在我嘗試獲取有效的訪問令牌之前,該網站似乎一直在工作.

                  require("twitteroauth.php");需要'twconfig.php';session_start();$twitteroauth = new TwitterOAuth(YOUR_CONSUMER_KEY, YOUR_CONSUMER_SECRET);$request_token = $twitteroauth->getRequestToken('http://****/tw_response.php');$oauth_token = $request_token['oauth_token'];$_SESSION['oauth_token'] = $oauth_token;$oauth_token_secret = $request_token['oauth_token_secret'];$_SESSION['oauth_token_secret'] = $oauth_token_secret;如果($twitteroauth->http_code == 200){url = $twitteroauth->getAuthorizeURL($request_token['oauth_token']);header('位置:'.$url);} 別的 {die('發生了一些錯誤.');}

                  這似乎工作正常,將我重定向到 Twitter 以登錄并確認訪問,然后它返回到 tw_response.php(我的回調 URL),在 URL 中包含以下變量:

                  http://example.com/login.php?oauth_token=sO3X...yj0k&oauth_verifier=Ip6T...gALQ

                  在 tw_response.php 中,我嘗試獲取訪問令牌,但它報告為無效.我嘗試使用 var_dump 查看訪問令牌的內容如下:

                  require("twitteroauth.php");需要'twconfig.php';session_start();$oauth_verifier = $_REQUEST['oauth_verifier'];$oauth_token = $_SESSION['oauth_token'];$oauth_token_secret = $_SESSION['oauth_token_secret'];$twitteroauth = new TwitterOAuth(YOUR_CONSUMER_KEY, YOUR_CONSUMER_SECRET, $oauth_token, $oauth_token_secret);$access_token = $twitteroauth->getAccessToken($data['oauth_verifier']);var_dump($access_token);

                  var_dump 的結果以無效/過期令牌"結尾:

                  array(8) {[oauth_url"] =>string(104) ""1.0" encoding="UTF-8"?>/oauth/access_token?oauth_consumer_key=ceE...9Dg"[oauth_nonce"]=>字符串(32)c52...d07"[oauth_signature"]=>字符串(28)ry7...Fcc="[oauth_signature_method"]=>字符串(9)HMAC-SHA1"[oauth_timestamp"]=>字符串(10)1359031586"[oauth_token"]=>字符串(40)sO3...j0k"[oauth_verifier"]=>字符串(43)IP6...ALQ"[oauth_version"]=>string(63) "1.0 無效/過期令牌 "}

                  解決方案

                  $access_token = $twitteroauth->getAccessToken($data['oauth_verifier']);var_dump($access_token);

                  $data 神奇地來自哪里?您有變量 $oauth_verifier,但請記住,如果這是您注冊的回調 URL,則您不需要它.

                  由于您在 getAccessToken 中使用了無效變量,它將返回無效值.

                  正確使用 TwitterOAuth 的方法:

                  if (!isset($_GET["oauth_token"])) {//在某處的配置文件中設置這些值.$twitter = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET);//附加一個 ?.如果您指定某些內容,這就是您的回調 URL.$credentials = $twitter->getRequestToken("http://example.com/test.php?");//嘗試讓 URL 更優雅一些...這是一個最小的例子$url = $twitter->getAuthorizeUrl($credentials);回聲 $url;//這些是必須用于獲取新令牌的臨時令牌,//永久訪問令牌.以某種方式存儲這些,//session 是一個不錯的選擇.$_SESSION["token"] = $credentials["oauth_token"];$_SESSION["secret"] = $credentials["oauth_token_secret"];} 別的 {//在這里使用用戶之前存儲的臨時憑證$twitter = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET,$_SESSION["token"], $_SESSION["secret"]);//已經使用了 oauth_token(來自請求).//您將這些憑據存儲在您的數據庫中(見下文).$credentials = $twitter->getAccessToken($_GET["oauth_verifier"]);//只是憑據的打印輸出.存儲這些,不要顯示它們.echo "

                  ";var_dump($credentials);//有效憑據,前提是您授予應用訪問權限.echo "</pre>";}

                  為了便于使用,我只使用單個腳本進行回調;如果您愿意(您可能應該這樣做),您可以將相關部分拆分為多個腳本.

                  對于您的數據庫來說,憑據還包括 Twitter 用戶的用戶名.
                  編輯:Twitter 現在為用戶 ID 分配 64 位整數.如果您無法在應用程序的每個部分都處理 64 位整數,您應該將其存儲為字符串,以確保不會以損壞的用戶 ID 和沖突結束.

                  array(4) {[oauth_token"]=>字符串(50)7041...wYupkS"[oauth_token_secret"]=>string(42) "O9ENq...21B2fk"[user_id"]=>//用戶身份.始終相同,永不改變(將其存儲為 ID)字符串(9)..."[屏幕名稱"]=>//用戶名.可以換.字符串(11)..."}

                  因此,如果您想通過 Twitter 登錄用戶,而無需明確授予他們登錄您網站的權限,您可以使用 $_SESSION(我使用數據庫進行登錄,如果您想保存那個狀態)在上面的腳本中,您將把它添加到 else 塊的末尾:

                  $_SESSION["token"] = $credentials["oauth_token"];$_SESSION["secret"] = $credentials["oauth_secret"];$_SESSION["username"] = $credentials["screen_name"];

                  您還可以從 GET account/verify_credentials<獲取用戶的屏幕名稱等信息/code>,如果你想給他們一個用戶頁面(如果你使用javascript,通過這里的id_str獲取他們的用戶ID):

                  $user_array = $twitter->get("account/verify_credentials");

                  I am using Twitter to log users into to a website, which seems to be working up until I attempt to obtain a valid Access Token.

                  require("twitteroauth.php");
                  require 'twconfig.php';
                  session_start();
                  
                  $twitteroauth = new TwitterOAuth(YOUR_CONSUMER_KEY, YOUR_CONSUMER_SECRET);
                  $request_token = $twitteroauth->getRequestToken('http://****/tw_response.php');
                  
                  $oauth_token = $request_token['oauth_token'];
                  $_SESSION['oauth_token'] = $oauth_token;
                  
                  $oauth_token_secret = $request_token['oauth_token_secret'];
                  $_SESSION['oauth_token_secret'] = $oauth_token_secret;
                  
                  if ($twitteroauth->http_code == 200) {
                      url = $twitteroauth->getAuthorizeURL($request_token['oauth_token']);
                      header('Location: '.$url);
                  } else {
                      die('Something wrong happened.');
                  }
                  

                  This seems to be working correctly, redirecting me to twitter to sign in and confirm access, after which it returns me to tw_response.php (my Callback url), with the following variables in the url:

                  http://example.com/login.php?oauth_token=sO3X...yj0k&oauth_verifier=Ip6T...gALQ 
                  

                  In tw_response.php I then try to get the Access Token, but it reports as invalid. I tried using var_dump to view the content of the access token as follows:

                  require("twitteroauth.php");
                  require 'twconfig.php';
                  session_start();
                  
                  $oauth_verifier = $_REQUEST['oauth_verifier'];
                  $oauth_token = $_SESSION['oauth_token'];
                  $oauth_token_secret = $_SESSION['oauth_token_secret'];
                  
                  $twitteroauth = new TwitterOAuth(YOUR_CONSUMER_KEY, YOUR_CONSUMER_SECRET, $oauth_token, $oauth_token_secret);
                  
                  $access_token = $twitteroauth->getAccessToken($data['oauth_verifier']);
                  var_dump($access_token);
                  

                  The result of the var_dump ends in "invalid / expired Token":

                  array(8) {
                      ["oauth_url"] => string(104) ""1.0" encoding="UTF-8"?>/oauth/access_token?oauth_consumer_key=ceE...9Dg"
                      ["oauth_nonce"]=> string(32) "c52...d07"
                      ["oauth_signature"]=> string(28) "ry7...Fcc="
                      ["oauth_signature_method"]=> string(9) "HMAC-SHA1"
                      ["oauth_timestamp"]=> string(10) "1359031586"
                      ["oauth_token"]=> string(40) "sO3...j0k"
                      ["oauth_verifier"]=> string(43) "Ip6...ALQ"
                      ["oauth_version"]=> string(63) "1.0 Invalid / expired Token "
                  }
                  

                  解決方案

                  $access_token = $twitteroauth->getAccessToken($data['oauth_verifier']);
                  var_dump($access_token);
                  

                  Where did $data magically come from? You have the variable $oauth_verifier, but keep in mind you don't need this if this is your registered callback URL.

                  Since you used an invalid variable inside getAccessToken, it will return an invalid value back.

                  The correct way to use TwitterOAuth:

                  if (!isset($_GET["oauth_token"])) {
                      // set these values in a config file somewhere.
                      $twitter = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET);
                  
                      // append a ?. This is your callback URL if you specify something.
                      $credentials = $twitter->getRequestToken("http://example.com/test.php?");
                  
                      // try and be a bit more elegant with the URL... This is a minimal example
                      $url = $twitter->getAuthorizeUrl($credentials);
                      echo $url;
                  
                      // these are temporary tokens that must be used to fetch the new,
                      // permanent access tokens. store these in some way,
                      // session is a decent choice.
                      $_SESSION["token"] = $credentials["oauth_token"];
                      $_SESSION["secret"] = $credentials["oauth_token_secret"];
                  } else {
                  
                      // use the user's previously stored temporary credentials here
                      $twitter = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET,
                                      $_SESSION["token"], $_SESSION["secret"]);
                  
                      // uses the oauth_token (from the request) already.
                      // you store these credentials in your database (see below).
                      $credentials = $twitter->getAccessToken($_GET["oauth_verifier"]);
                  
                      // just a printout of credentials. store these, don't display them.
                      echo "<pre>";
                      var_dump($credentials);
                      // valid credentials, provided you give the app access to them.
                      echo "</pre>";
                  }
                  

                  I just use a single script for callbacks for ease of use; you can split the relevant sections into multiple scripts if you like (and you probably should).

                  Handily for your database, the credentials include the twitter user's username, too.
                  Edit: Twitter is now allocating 64bit integers for user IDs. You should store this as a string to ensure that you don't end up with mangled user IDs and collisions if you can't handle 64bit integers in every part of your application.

                  array(4) {
                    ["oauth_token"]=>
                    string(50) "7041...wYupkS"
                    ["oauth_token_secret"]=>
                    string(42) "O9ENq...21B2fk"
                    ["user_id"]=> // user ID. always the same, never changes (store this as ID)
                    string(9) "..."
                    ["screen_name"]=> // username. can change.
                    string(11) "..."
                  }
                  

                  So, if you want to log users in through twitter, without explicitly giving them a login to your site, you could use $_SESSION (I use databases for my logins, which is recommended if you want to save that state) In the above script you would add this to the end of the else block:

                  $_SESSION["token"] = $credentials["oauth_token"];
                  $_SESSION["secret"] = $credentials["oauth_secret"];
                  $_SESSION["username"] = $credentials["screen_name"];
                  

                  You can also get the user's screen name and more from GET account/verify_credentials, if you want to give them a user page (if you use javascript, grab their userid through id_str here):

                  $user_array = $twitter->get("account/verify_credentials");
                  

                  這篇關于為什么我的 twitter oauth 訪問令牌無效/過期的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

                  【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

                  相關文檔推薦

                  Deadlock exception code for PHP, MySQL PDOException?(PHP、MySQL PDOException 的死鎖異常代碼?)
                  PHP PDO MySQL scrollable cursor doesn#39;t work(PHP PDO MySQL 可滾動游標不起作用)
                  PHP PDO ODBC connection(PHP PDO ODBC 連接)
                  Using PDO::FETCH_CLASS with Magic Methods(使用 PDO::FETCH_CLASS 和魔術方法)
                  php pdo get only one value from mysql; value that equals to variable(php pdo 只從 mysql 獲取一個值;等于變量的值)
                  MSSQL PDO could not find driver(MSSQL PDO 找不到驅動程序)

                    <tbody id='uNiek'></tbody>
                  <tfoot id='uNiek'></tfoot>
                  <i id='uNiek'><tr id='uNiek'><dt id='uNiek'><q id='uNiek'><span id='uNiek'><b id='uNiek'><form id='uNiek'><ins id='uNiek'></ins><ul id='uNiek'></ul><sub id='uNiek'></sub></form><legend id='uNiek'></legend><bdo id='uNiek'><pre id='uNiek'><center id='uNiek'></center></pre></bdo></b><th id='uNiek'></th></span></q></dt></tr></i><div class="yagy0ok" id='uNiek'><tfoot id='uNiek'></tfoot><dl id='uNiek'><fieldset id='uNiek'></fieldset></dl></div>

                  <small id='uNiek'></small><noframes id='uNiek'>

                      • <bdo id='uNiek'></bdo><ul id='uNiek'></ul>
                          <legend id='uNiek'><style id='uNiek'><dir id='uNiek'><q id='uNiek'></q></dir></style></legend>
                            主站蜘蛛池模板: 阻垢剂,反渗透阻垢剂,缓蚀阻垢剂-山东普尼奥水处理科技有限公司 真空粉体取样阀,电动楔式闸阀,电动针型阀-耐苛尔(上海)自动化仪表有限公司 | 消防泵-XBD单级卧式/立式消防泵-上海塑泉泵阀(集团)有限公司 | 电力测功机,电涡流测功机,磁粉制动器,南通远辰曳引机测试台 | 浙江富广阀门有限公司| 无纺布包装机|径向缠绕包装机|缠绕膜打包机-上海晏陵智能设备有限公司 | 中细软知识产权_专业知识产权解决方案提供商 | 重庆波纹管|重庆钢带管|重庆塑钢管|重庆联进管道有限公司 | 单电机制砂机,BHS制砂机,制沙机设备,制砂机价格-正升制砂机厂家 单级/双级旋片式真空泵厂家,2xz旋片真空泵-浙江台州求精真空泵有限公司 | 电动球阀_不锈钢电动球阀_电动三通球阀_电动调节球阀_上海湖泉阀门有限公司 | 广州办公室设计,办公室装修,写字楼设计,办公室装修公司_德科 | 浙江浩盛阀门有限公司| 定做大型恒温循环水浴槽-工业用不锈钢恒温水箱-大容量低温恒温水槽-常州精达仪器 | 宏源科技-房地产售楼系统|线上开盘系统|售楼管理系统|线上开盘软件 | 上海办公室装修_上海店铺装修公司_厂房装潢设计_办公室装修 | 电渗析,废酸回收,双极膜-山东天维膜技术有限公司 | 专业生产动态配料系统_饲料配料系统_化肥配料系统等配料系统-郑州鑫晟重工机械有限公司 | 除甲醛公司-甲醛检测-广西雅居环境科技有限公司 | 成都办公室装修-办公室设计-写字楼装修设计-厂房装修-四川和信建筑装饰工程有限公司 | 减速机电机一体机_带电机减速器一套_德国BOSERL电动机与减速箱生产厂家 | 法兰连接型电磁流量计-蒸汽孔板节流装置流量计-北京凯安达仪器仪表有限公司 | 横河变送器-横河压力变送器-EJA变送器-EJA压力变送器-「泉蕴仪表」 | ISO9001认证咨询_iso9001企业认证代理机构_14001|18001|16949|50430认证-艾世欧认证网 | 昆明网络公司|云南网络公司|昆明网站建设公司|昆明网页设计|云南网站制作|新媒体运营公司|APP开发|小程序研发|尽在昆明奥远科技有限公司 | 沟盖板_复合沟盖板厂_电力盖板_树脂雨水篦子-淄博拜斯特 | 纸塑分离机-纸塑分离清洗机设备-压力筛-碎浆机厂家金双联环保 | 河南新乡德诚生产厂家主营震动筛,振动筛设备,筛机,塑料震动筛选机 | 缓蚀除垢剂_循环水阻垢剂_反渗透锅炉阻垢剂_有机硫化物-郑州威大水处理材料有限公司 | sus630/303cu不锈钢棒,440C/430F/17-4ph不锈钢研磨棒-江苏德镍金属科技有限公司 | 氢氧化钙设备, 氢氧化钙生产线-淄博惠琛工贸有限公司 | 广州活动策划公司-15+年专业大型公关活动策划执行管理经验-睿阳广告 | 液压升降平台_剪叉式液压/导轨式升降机_传菜机定做「宁波日腾升降机厂家」 | PVC地板|PVC塑胶地板|PVC地板厂家|地板胶|防静电地板-无锡腾方装饰材料有限公司-咨询热线:4008-798-128 | 全国国际化学校_国际高中招生_一站式升学择校服务-国际学校网 | 小型气象站_便携式自动气象站_校园气象站-竞道气象设备网 | 物流之家新闻网-最新物流新闻|物流资讯|物流政策|物流网-匡匡奈斯物流科技 | 工业车间焊接-整体|集中除尘设备-激光|等离子切割机配套除尘-粉尘烟尘净化治理厂家-山东美蓝环保科技有限公司 | 数控走心机-双主轴走心机厂家-南京建克 | 重庆波纹管|重庆钢带管|重庆塑钢管|重庆联进管道有限公司 | 成都治疗尖锐湿疣比较好的医院-成都治疗尖锐湿疣那家医院好-成都西南皮肤病医院 | 粉末包装机,拆包机厂家,价格-上海强牛包装机械设备有限公司 | crm客户关系管理系统,销售管理系统,crm系统,在线crm,移动crm系统 - 爱客crm |