亚洲国产精品无码久久大片,亚洲AV无码乱码麻豆精品国产,亚洲品质自拍网站,少妇伦子伦精品无码STYLES,国产精久久久久久久

使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站

使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站

使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(關(guān)于我們Bootstrap中文網(wǎng)--創(chuàng )建于2012年的網(wǎng)站show出來(lái)吧)

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 54 次瀏覽 ? 2022-01-01 01:16 ? 來(lái)自相關(guān)話(huà)題

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(關(guān)于我們Bootstrap中文網(wǎng)--創(chuàng )建于2012年的網(wǎng)站show出來(lái)吧)
  關(guān)于我們
  Bootstrap中文網(wǎng)——成立于2012年,原因是國內沒(méi)有關(guān)于Bootstrap的好的中文教程和交流渠道。為此,我們翻譯整理了Bootstrap文檔,建立了QQ群和微博(@bootcss),以方便大家對這個(gè)CSS框架的喜愛(ài)。城市老師分享前端設計開(kāi)發(fā)經(jīng)驗。
  展示你的 Bootstrap 作品
  你是 Bootstrap 的粉絲嗎?您是否使用 Bootstrap 進(jìn)行開(kāi)發(fā)?你開(kāi)發(fā)的網(wǎng)站是Powered By Bootstrap嗎?然后展示你的網(wǎng)站表演!
  任何已經(jīng)確認使用Bootstrap CSS框架的網(wǎng)站,我們都會(huì )在“Bootstrap優(yōu)秀站推薦”列表中展示您提交的網(wǎng)站的截圖和介紹,并有機會(huì )獲得用 Bootstrap 中文在網(wǎng)頁(yè)首頁(yè)推薦。
  請發(fā)郵件至下方郵箱,并在郵件標題中注明(Bootstrap網(wǎng)站提交作品-網(wǎng)站姓名或網(wǎng)址)。
  郵件:
  加入我們
  Bootstrap中文網(wǎng)站致力于前端開(kāi)發(fā)和推廣。它堅持共享和開(kāi)放互聯(lián)網(wǎng)的精神。它旨在為前端攻城師和設計師之間提供一個(gè)交流的平臺。如果您和我們有相同的目標,我們很樂(lè )意一起工作。行。
  如果你也熱愛(ài)前端開(kāi)發(fā)、Bootstrap,并且有一顆創(chuàng )業(yè)的心,歡迎聯(lián)系我們,也歡迎你加入我們的團隊!
  郵件: 查看全部

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(關(guān)于我們Bootstrap中文網(wǎng)--創(chuàng )建于2012年的網(wǎng)站show出來(lái)吧)
  關(guān)于我們
  Bootstrap中文網(wǎng)——成立于2012年,原因是國內沒(méi)有關(guān)于Bootstrap的好的中文教程和交流渠道。為此,我們翻譯整理了Bootstrap文檔,建立了QQ群和微博(@bootcss),以方便大家對這個(gè)CSS框架的喜愛(ài)。城市老師分享前端設計開(kāi)發(fā)經(jīng)驗。
  展示你的 Bootstrap 作品
  你是 Bootstrap 的粉絲嗎?您是否使用 Bootstrap 進(jìn)行開(kāi)發(fā)?你開(kāi)發(fā)的網(wǎng)站是Powered By Bootstrap嗎?然后展示你的網(wǎng)站表演!
  任何已經(jīng)確認使用Bootstrap CSS框架的網(wǎng)站,我們都會(huì )在“Bootstrap優(yōu)秀站推薦”列表中展示您提交的網(wǎng)站的截圖和介紹,并有機會(huì )獲得用 Bootstrap 中文在網(wǎng)頁(yè)首頁(yè)推薦。
  請發(fā)郵件至下方郵箱,并在郵件標題中注明(Bootstrap網(wǎng)站提交作品-網(wǎng)站姓名或網(wǎng)址)。
  郵件:
  加入我們
  Bootstrap中文網(wǎng)站致力于前端開(kāi)發(fā)和推廣。它堅持共享和開(kāi)放互聯(lián)網(wǎng)的精神。它旨在為前端攻城師和設計師之間提供一個(gè)交流的平臺。如果您和我們有相同的目標,我們很樂(lè )意一起工作。行。
  如果你也熱愛(ài)前端開(kāi)發(fā)、Bootstrap,并且有一顆創(chuàng )業(yè)的心,歡迎聯(lián)系我們,也歡迎你加入我們的團隊!
  郵件:

使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(如何把這種方法應用在組織學(xué)習中成為越來(lái)越的網(wǎng)絡(luò )應用)

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 61 次瀏覽 ? 2022-01-01 01:15 ? 來(lái)自相關(guān)話(huà)題

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(如何把這種方法應用在組織學(xué)習中成為越來(lái)越的網(wǎng)絡(luò )應用)
  毫無(wú)疑問(wèn),微博已經(jīng)成為越來(lái)越流行的網(wǎng)絡(luò )應用程序。如何將這種方法應用到組織學(xué)習中,使其成為一種非正式的學(xué)習方式,是很多培訓管理者思考的問(wèn)題。
  以新浪微博為例,企業(yè)學(xué)習推廣的方式大致可以分為兩種:一是直接應用模式,即直接使用新浪微博輔助培訓業(yè)務(wù),這是初級應用階段二、內部 實(shí)施模式是在企業(yè)內部部署一套專(zhuān)屬的企業(yè)微博,并在此基礎上開(kāi)始組織內部的社會(huì )化學(xué)習。這個(gè)模型比較復雜,但意義深遠。是微博推廣企業(yè)學(xué)習的高級階段。本文將詳細介紹這兩種模式的應用方法、內容和要點(diǎn)。
  
  
  直接申請模式
  直接應用模式的目標是通過(guò)微博輔助傳統培訓業(yè)務(wù)。培訓部可以通過(guò)建立培訓部微博賬號、協(xié)助培訓項目、推廣企業(yè)e-Learning等方式,達到直接申請模式的效果。
  創(chuàng )建微博賬號的培訓部門(mén)是機構的內部服務(wù)部門(mén)。一般來(lái)說(shuō),企業(yè)的培訓部門(mén)沒(méi)有自己的網(wǎng)站,缺乏與員工的溝通。因此,培訓部自己的微博的創(chuàng )建可以作為在線(xiàn)服務(wù)窗口。銀聯(lián)培訓中心、用友大學(xué)、吉利大學(xué)等企業(yè)培訓中心或企業(yè)大學(xué)均建立了自己的微博賬號。
  創(chuàng )建微博賬號非常簡(jiǎn)單,只需在新浪微博上申請即可。需要注意的是,最好申請新浪代理認證。認證通過(guò)后,可以使用的微博功能將更多,包括:展示培訓中心的視頻或圖片,專(zhuān)門(mén)設置咨詢(xún)、留言、表?yè)P和意見(jiàn)窗口,展示培訓團隊成員的風(fēng)采。
  多功能輔助培訓項目擁有專(zhuān)屬微博賬號后,培訓中心可深度應用各種微博功能,輔助傳統面授培訓項目。新浪微博匯聚了上千款功能應用,其中不少可以輔助面授培訓。我們列出了一些可以輔助訓練的最常見(jiàn)的微博功能。
  微博大屏 “微博大屏”更適合參與人數較多的培訓項目,其價(jià)值在于能夠激活培訓現場(chǎng)的互動(dòng)氛圍。在培訓過(guò)程中,可以使用獨立投影將微博大屏幕的內容投影到培訓現場(chǎng)。講師可以通過(guò)大屏幕采集學(xué)員的意見(jiàn),學(xué)員可以通過(guò)手機微博參與培訓和互動(dòng)過(guò)程。有關(guān)示例,請參見(jiàn)圖 1。
  微活動(dòng)“微活動(dòng)”是一個(gè)非常好的培訓營(yíng)銷(xiāo)工具,適合在培訓項目的前期招收學(xué)員。如果學(xué)員的微博滲透率高,可以通過(guò)“微活動(dòng)”的形式開(kāi)展培訓項目。在“微活動(dòng)”中,可以設置獎品、目標粉絲等功能,配合粉絲轉發(fā),起到培訓營(yíng)銷(xiāo)的作用(見(jiàn)圖表2).
  微群微群可以設置和邀請固定成員加入,類(lèi)似QQ群的功能(見(jiàn)圖3),適合輔助期長(cháng)的培訓項目。講師或培訓經(jīng)理可以通過(guò)微群發(fā)布通知,< @文章、上傳附件等,也可以要求學(xué)員在微群討論問(wèn)題或提交作業(yè)。培訓項目結束后,微群可以解散或保留,成為積累培訓資源的平臺。
  促進(jìn)企業(yè)電子學(xué)習。一般來(lái)說(shuō),企業(yè)在線(xiàn)學(xué)習側重于自主學(xué)習,學(xué)習者之間缺乏互動(dòng)。雖然有的公司在學(xué)習平臺開(kāi)設了BBS討論區,但在大多數情況下,人氣并不旺。培訓管理者可以考慮將微博與在線(xiàn)學(xué)習相結合,通過(guò)微博代碼嵌入等功能增強在線(xiàn)學(xué)習的互動(dòng)性。具體可以通過(guò)以下方式實(shí)現。
  加強在線(xiàn)課程的互動(dòng)活動(dòng)。在微博上發(fā)布與在線(xiàn)課程話(huà)題相關(guān)的微博,引發(fā)學(xué)習者對內容的討論,并將討論地址鏈接到課程介紹等明顯位置。本質(zhì)是每門(mén)課程為在線(xiàn)課程創(chuàng )建一個(gè)微博討論區。建立方式有兩種:一是培訓管理員可以在發(fā)布課程時(shí)同時(shí)創(chuàng )建微博并設置課程鏈接;二、直接在課件中嵌入微博討論區的永久鏈接,讓學(xué)習者在學(xué)習課件時(shí)可以隨時(shí)進(jìn)入微博參與互動(dòng)。
  聚合在線(xiàn)學(xué)習和網(wǎng)絡(luò )資源。通過(guò)微博的關(guān)鍵詞聚合功能,可以將課件的內容與微博平臺的內容關(guān)聯(lián)起來(lái)。在海量的微博內容中,所有與網(wǎng)絡(luò )課程相關(guān)的微博內容都可以被提取出來(lái)并按時(shí)間順序展示在網(wǎng)絡(luò )課件的指定位置(見(jiàn)圖表4)。內容聚合可以讓互動(dòng)更深入, 將學(xué)習交流不僅擴展到在線(xiàn)課程的學(xué)習者,也擴展到所有微博成員。
  推廣和評估在線(xiàn)課程。微博也可以用于在線(xiàn)課程的營(yíng)銷(xiāo)推廣和評價(jià),實(shí)施方法比較簡(jiǎn)單。例如,在課程開(kāi)始或結束時(shí),您可以添加“微博轉發(fā)”功能,將課程的介紹、鏈接和簡(jiǎn)要評價(jià)轉發(fā)到學(xué)習者的微博,學(xué)習者的粉絲會(huì )第一時(shí)間看到課程介紹和鏈接。為了擴大影響力,管理者還可以加入除新浪微博以外的其他社交網(wǎng)絡(luò )的分享鏈接。
  內部實(shí)施模式 所謂內部實(shí)施模式,就是在公司內部建立一個(gè)獨立完整的微博系統。企業(yè)可以在內部微博系統中建立自己的規則,比如添加V認證,風(fēng)格設計,與企業(yè)的學(xué)習系統或其他信息系統有更深層次的融合。
  在企業(yè)內部建立微博的目的,不僅可以輔助傳統的培訓業(yè)務(wù),還可以利用微博的實(shí)施和應用在企業(yè)內部進(jìn)行社交學(xué)習,使微博成為員工分享和學(xué)習的新平臺。
  新浪微博提供了一個(gè)免費的企業(yè)微博下載版——Xweibo,企業(yè)可以?xún)炔堪惭b使用。企業(yè)版微博(Xweibo)雖然不具備新浪微博的綜合功能,但具備微博發(fā)布、瀏覽、轉發(fā)、評論、采集、話(huà)題等基本功能,并且X微博的功能也在不斷升級完善本文以X微博系統為例,介紹如何在企業(yè)內部實(shí)現部署和應用。
  下載安裝Xweibo的下載地址為,下載安裝頁(yè)面見(jiàn)圖5。安裝時(shí)需要配合技術(shù)部門(mén),做好前期溝通和準備工作。技術(shù)人員按照下載包中的說(shuō)明在企業(yè)內網(wǎng)完成安裝后,需要進(jìn)行初始化工作,主要包括以下幾個(gè)方面。
  ·設置公司微博名稱(chēng)和·設置公司微博與新浪微博的關(guān)系·微博頁(yè)面布局設計·內容規則建立可直接應用。但為了達到更好的效果,通常會(huì )與企業(yè)的其他業(yè)務(wù)系統進(jìn)行集成。特別是與學(xué)習管理系統和公司現有的BBS論壇系統深度融合,更方便員工使用。微博提供了一些內置的系統集成工具,企業(yè)可以使用這些工具進(jìn)行簡(jiǎn)單的集成。
  1. 定義首頁(yè)鏈接功能:您可以通過(guò)該功能將相關(guān)學(xué)習系統的鏈接集成到微博首頁(yè)。
  2.外部論壇插件功能:通過(guò)此功能,Xweibo可以與公司內部BBS論壇同步登錄和更新。
  3.外呼工具功能:可以將“轉發(fā)碼”和“異地呼叫碼”嵌入學(xué)習管理系統、博客、郵箱、OA等系統中,讓微博內容可以以各種方式改變。表單在其他系統中顯示。
  如果企業(yè)需要更深度的整合,增加個(gè)性化的功能,開(kāi)發(fā)者需要在X微博上進(jìn)行高級二次開(kāi)發(fā)。
  只有大規模應用才能推廣和應用社交學(xué)習的力量。培訓經(jīng)理可以根據業(yè)務(wù)需要制定推廣應用策略和計劃。通過(guò)企業(yè)微博的實(shí)施,促進(jìn)社會(huì )學(xué)習,必須調動(dòng)員工的參與度和積極性。根據X微博的特點(diǎn),企業(yè)可以建立以下三種機制,打開(kāi)快速應用的局面。
  X微博與新浪微博互聯(lián)互通機制,所有擁有新浪微博賬號的員工均可與X微博同步數據。除了微博內容,“粉絲”也可以統一?;ヂ?lián)機制可以降低微博使用難度,簡(jiǎn)化申請流程。但需要注意的是,有些公司不希望員工發(fā)布的某些內容同步到互聯(lián)網(wǎng)上,公司可以通過(guò)技術(shù)和系統對其進(jìn)行限制。
  認證機制在企業(yè)內部開(kāi)展“微博加V認證”,培訓管理者可以通過(guò)這種方式提高員工參與度。 Xweibo的認證可以分類(lèi),例如可以分為技術(shù)專(zhuān)家、內部講師、工作專(zhuān)業(yè)人士等不同類(lèi)別(見(jiàn)圖表6)。同時(shí),它還可以與“名人管理”合作” 功能控制各類(lèi)內部組織。有效管理高級和專(zhuān)業(yè)群體。Xweibo認證機制也是發(fā)現和梳理內部專(zhuān)家的最佳途徑之一,將為企業(yè)知識的實(shí)施提供有效的支持和幫助管理。
  活動(dòng)機制 在企業(yè)內部微博上開(kāi)展各種活動(dòng),增加微博的知名度和活躍氣氛。微博內置了兩個(gè)活動(dòng)功能模塊:一個(gè)是“在線(xiàn)直播”,主要輔助企業(yè)的大型活動(dòng),以及微博平臺上活動(dòng)狀態(tài)的文字直播。同時(shí),活動(dòng)現場(chǎng)可以與微博參與者互動(dòng);另一個(gè)是“在線(xiàn)訪(fǎng)談”與新浪微博的“微訪(fǎng)談”功能基本一致,管理者可以通過(guò)該功能設計和安排在線(xiàn)脫口秀,員工可以通過(guò)微博實(shí)時(shí)觀(guān)看和參與互動(dòng)。
  此外,培訓經(jīng)理可以考慮將日常工作和各種活動(dòng)與企業(yè)微博相結合。例如,企業(yè)微博在培訓項目的設計、實(shí)施、管理和評估中具有價(jià)值。內部微博在輔助培訓和員工學(xué)習中的應用只是一個(gè)開(kāi)始。作為企業(yè)內部的社交軟件,它將成為員工之間溝通與協(xié)作的重要工具。 查看全部

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(如何把這種方法應用在組織學(xué)習中成為越來(lái)越的網(wǎng)絡(luò )應用)
  毫無(wú)疑問(wèn),微博已經(jīng)成為越來(lái)越流行的網(wǎng)絡(luò )應用程序。如何將這種方法應用到組織學(xué)習中,使其成為一種非正式的學(xué)習方式,是很多培訓管理者思考的問(wèn)題。
  以新浪微博為例,企業(yè)學(xué)習推廣的方式大致可以分為兩種:一是直接應用模式,即直接使用新浪微博輔助培訓業(yè)務(wù),這是初級應用階段二、內部 實(shí)施模式是在企業(yè)內部部署一套專(zhuān)屬的企業(yè)微博,并在此基礎上開(kāi)始組織內部的社會(huì )化學(xué)習。這個(gè)模型比較復雜,但意義深遠。是微博推廣企業(yè)學(xué)習的高級階段。本文將詳細介紹這兩種模式的應用方法、內容和要點(diǎn)。
  
  
  直接申請模式
  直接應用模式的目標是通過(guò)微博輔助傳統培訓業(yè)務(wù)。培訓部可以通過(guò)建立培訓部微博賬號、協(xié)助培訓項目、推廣企業(yè)e-Learning等方式,達到直接申請模式的效果。
  創(chuàng )建微博賬號的培訓部門(mén)是機構的內部服務(wù)部門(mén)。一般來(lái)說(shuō),企業(yè)的培訓部門(mén)沒(méi)有自己的網(wǎng)站,缺乏與員工的溝通。因此,培訓部自己的微博的創(chuàng )建可以作為在線(xiàn)服務(wù)窗口。銀聯(lián)培訓中心、用友大學(xué)、吉利大學(xué)等企業(yè)培訓中心或企業(yè)大學(xué)均建立了自己的微博賬號。
  創(chuàng )建微博賬號非常簡(jiǎn)單,只需在新浪微博上申請即可。需要注意的是,最好申請新浪代理認證。認證通過(guò)后,可以使用的微博功能將更多,包括:展示培訓中心的視頻或圖片,專(zhuān)門(mén)設置咨詢(xún)、留言、表?yè)P和意見(jiàn)窗口,展示培訓團隊成員的風(fēng)采。
  多功能輔助培訓項目擁有專(zhuān)屬微博賬號后,培訓中心可深度應用各種微博功能,輔助傳統面授培訓項目。新浪微博匯聚了上千款功能應用,其中不少可以輔助面授培訓。我們列出了一些可以輔助訓練的最常見(jiàn)的微博功能。
  微博大屏 “微博大屏”更適合參與人數較多的培訓項目,其價(jià)值在于能夠激活培訓現場(chǎng)的互動(dòng)氛圍。在培訓過(guò)程中,可以使用獨立投影將微博大屏幕的內容投影到培訓現場(chǎng)。講師可以通過(guò)大屏幕采集學(xué)員的意見(jiàn),學(xué)員可以通過(guò)手機微博參與培訓和互動(dòng)過(guò)程。有關(guān)示例,請參見(jiàn)圖 1。
  微活動(dòng)“微活動(dòng)”是一個(gè)非常好的培訓營(yíng)銷(xiāo)工具,適合在培訓項目的前期招收學(xué)員。如果學(xué)員的微博滲透率高,可以通過(guò)“微活動(dòng)”的形式開(kāi)展培訓項目。在“微活動(dòng)”中,可以設置獎品、目標粉絲等功能,配合粉絲轉發(fā),起到培訓營(yíng)銷(xiāo)的作用(見(jiàn)圖表2).
  微群微群可以設置和邀請固定成員加入,類(lèi)似QQ群的功能(見(jiàn)圖3),適合輔助期長(cháng)的培訓項目。講師或培訓經(jīng)理可以通過(guò)微群發(fā)布通知,< @文章、上傳附件等,也可以要求學(xué)員在微群討論問(wèn)題或提交作業(yè)。培訓項目結束后,微群可以解散或保留,成為積累培訓資源的平臺。
  促進(jìn)企業(yè)電子學(xué)習。一般來(lái)說(shuō),企業(yè)在線(xiàn)學(xué)習側重于自主學(xué)習,學(xué)習者之間缺乏互動(dòng)。雖然有的公司在學(xué)習平臺開(kāi)設了BBS討論區,但在大多數情況下,人氣并不旺。培訓管理者可以考慮將微博與在線(xiàn)學(xué)習相結合,通過(guò)微博代碼嵌入等功能增強在線(xiàn)學(xué)習的互動(dòng)性。具體可以通過(guò)以下方式實(shí)現。
  加強在線(xiàn)課程的互動(dòng)活動(dòng)。在微博上發(fā)布與在線(xiàn)課程話(huà)題相關(guān)的微博,引發(fā)學(xué)習者對內容的討論,并將討論地址鏈接到課程介紹等明顯位置。本質(zhì)是每門(mén)課程為在線(xiàn)課程創(chuàng )建一個(gè)微博討論區。建立方式有兩種:一是培訓管理員可以在發(fā)布課程時(shí)同時(shí)創(chuàng )建微博并設置課程鏈接;二、直接在課件中嵌入微博討論區的永久鏈接,讓學(xué)習者在學(xué)習課件時(shí)可以隨時(shí)進(jìn)入微博參與互動(dòng)。
  聚合在線(xiàn)學(xué)習和網(wǎng)絡(luò )資源。通過(guò)微博的關(guān)鍵詞聚合功能,可以將課件的內容與微博平臺的內容關(guān)聯(lián)起來(lái)。在海量的微博內容中,所有與網(wǎng)絡(luò )課程相關(guān)的微博內容都可以被提取出來(lái)并按時(shí)間順序展示在網(wǎng)絡(luò )課件的指定位置(見(jiàn)圖表4)。內容聚合可以讓互動(dòng)更深入, 將學(xué)習交流不僅擴展到在線(xiàn)課程的學(xué)習者,也擴展到所有微博成員。
  推廣和評估在線(xiàn)課程。微博也可以用于在線(xiàn)課程的營(yíng)銷(xiāo)推廣和評價(jià),實(shí)施方法比較簡(jiǎn)單。例如,在課程開(kāi)始或結束時(shí),您可以添加“微博轉發(fā)”功能,將課程的介紹、鏈接和簡(jiǎn)要評價(jià)轉發(fā)到學(xué)習者的微博,學(xué)習者的粉絲會(huì )第一時(shí)間看到課程介紹和鏈接。為了擴大影響力,管理者還可以加入除新浪微博以外的其他社交網(wǎng)絡(luò )的分享鏈接。
  內部實(shí)施模式 所謂內部實(shí)施模式,就是在公司內部建立一個(gè)獨立完整的微博系統。企業(yè)可以在內部微博系統中建立自己的規則,比如添加V認證,風(fēng)格設計,與企業(yè)的學(xué)習系統或其他信息系統有更深層次的融合。
  在企業(yè)內部建立微博的目的,不僅可以輔助傳統的培訓業(yè)務(wù),還可以利用微博的實(shí)施和應用在企業(yè)內部進(jìn)行社交學(xué)習,使微博成為員工分享和學(xué)習的新平臺。
  新浪微博提供了一個(gè)免費的企業(yè)微博下載版——Xweibo,企業(yè)可以?xún)炔堪惭b使用。企業(yè)版微博(Xweibo)雖然不具備新浪微博的綜合功能,但具備微博發(fā)布、瀏覽、轉發(fā)、評論、采集、話(huà)題等基本功能,并且X微博的功能也在不斷升級完善本文以X微博系統為例,介紹如何在企業(yè)內部實(shí)現部署和應用。
  下載安裝Xweibo的下載地址為,下載安裝頁(yè)面見(jiàn)圖5。安裝時(shí)需要配合技術(shù)部門(mén),做好前期溝通和準備工作。技術(shù)人員按照下載包中的說(shuō)明在企業(yè)內網(wǎng)完成安裝后,需要進(jìn)行初始化工作,主要包括以下幾個(gè)方面。
  ·設置公司微博名稱(chēng)和·設置公司微博與新浪微博的關(guān)系·微博頁(yè)面布局設計·內容規則建立可直接應用。但為了達到更好的效果,通常會(huì )與企業(yè)的其他業(yè)務(wù)系統進(jìn)行集成。特別是與學(xué)習管理系統和公司現有的BBS論壇系統深度融合,更方便員工使用。微博提供了一些內置的系統集成工具,企業(yè)可以使用這些工具進(jìn)行簡(jiǎn)單的集成。
  1. 定義首頁(yè)鏈接功能:您可以通過(guò)該功能將相關(guān)學(xué)習系統的鏈接集成到微博首頁(yè)。
  2.外部論壇插件功能:通過(guò)此功能,Xweibo可以與公司內部BBS論壇同步登錄和更新。
  3.外呼工具功能:可以將“轉發(fā)碼”和“異地呼叫碼”嵌入學(xué)習管理系統、博客、郵箱、OA等系統中,讓微博內容可以以各種方式改變。表單在其他系統中顯示。
  如果企業(yè)需要更深度的整合,增加個(gè)性化的功能,開(kāi)發(fā)者需要在X微博上進(jìn)行高級二次開(kāi)發(fā)。
  只有大規模應用才能推廣和應用社交學(xué)習的力量。培訓經(jīng)理可以根據業(yè)務(wù)需要制定推廣應用策略和計劃。通過(guò)企業(yè)微博的實(shí)施,促進(jìn)社會(huì )學(xué)習,必須調動(dòng)員工的參與度和積極性。根據X微博的特點(diǎn),企業(yè)可以建立以下三種機制,打開(kāi)快速應用的局面。
  X微博與新浪微博互聯(lián)互通機制,所有擁有新浪微博賬號的員工均可與X微博同步數據。除了微博內容,“粉絲”也可以統一?;ヂ?lián)機制可以降低微博使用難度,簡(jiǎn)化申請流程。但需要注意的是,有些公司不希望員工發(fā)布的某些內容同步到互聯(lián)網(wǎng)上,公司可以通過(guò)技術(shù)和系統對其進(jìn)行限制。
  認證機制在企業(yè)內部開(kāi)展“微博加V認證”,培訓管理者可以通過(guò)這種方式提高員工參與度。 Xweibo的認證可以分類(lèi),例如可以分為技術(shù)專(zhuān)家、內部講師、工作專(zhuān)業(yè)人士等不同類(lèi)別(見(jiàn)圖表6)。同時(shí),它還可以與“名人管理”合作” 功能控制各類(lèi)內部組織。有效管理高級和專(zhuān)業(yè)群體。Xweibo認證機制也是發(fā)現和梳理內部專(zhuān)家的最佳途徑之一,將為企業(yè)知識的實(shí)施提供有效的支持和幫助管理。
  活動(dòng)機制 在企業(yè)內部微博上開(kāi)展各種活動(dòng),增加微博的知名度和活躍氣氛。微博內置了兩個(gè)活動(dòng)功能模塊:一個(gè)是“在線(xiàn)直播”,主要輔助企業(yè)的大型活動(dòng),以及微博平臺上活動(dòng)狀態(tài)的文字直播。同時(shí),活動(dòng)現場(chǎng)可以與微博參與者互動(dòng);另一個(gè)是“在線(xiàn)訪(fǎng)談”與新浪微博的“微訪(fǎng)談”功能基本一致,管理者可以通過(guò)該功能設計和安排在線(xiàn)脫口秀,員工可以通過(guò)微博實(shí)時(shí)觀(guān)看和參與互動(dòng)。
  此外,培訓經(jīng)理可以考慮將日常工作和各種活動(dòng)與企業(yè)微博相結合。例如,企業(yè)微博在培訓項目的設計、實(shí)施、管理和評估中具有價(jià)值。內部微博在輔助培訓和員工學(xué)習中的應用只是一個(gè)開(kāi)始。作為企業(yè)內部的社交軟件,它將成為員工之間溝通與協(xié)作的重要工具。

使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(這是第一篇:關(guān)于uploadAPI的OAuth驗證失敗問(wèn)題(組圖))

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 57 次瀏覽 ? 2021-12-31 23:32 ? 來(lái)自相關(guān)話(huà)題

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(這是第一篇:關(guān)于uploadAPI的OAuth驗證失敗問(wèn)題(組圖))
  新浪微博很受歡迎,開(kāi)放平臺很受歡迎,開(kāi)發(fā)者很受歡迎。
  開(kāi)發(fā)者受歡迎是因為新浪微博開(kāi)放平臺對開(kāi)發(fā)者非常不友好,其API從實(shí)現到文檔都很粗糙。
  API 實(shí)現不規范,可以容忍,但是文檔沒(méi)有解釋清楚,開(kāi)發(fā)者自己探索是很離譜的。新浪似乎還沒(méi)有來(lái)得及照顧第三方開(kāi)發(fā)者,開(kāi)放平臺現在只是“開(kāi)門(mén)見(jiàn)山”。結果就是開(kāi)發(fā)者折騰了很多沒(méi)有意義的東西,浪費時(shí)間!
  我寫(xiě)這一系列文章的目的是為了避免后來(lái)者犯同樣的罪。
  這是上傳AP??I OAuth認證失敗的第一篇。去論壇搜索上傳就知道有多少人受苦了。
  Upload API 的 OAuth 之所以難,部分是因為它的 HTTP 請求格式的特殊性,主要是因為新浪微博的實(shí)現令人難以置信。
  Upload API 的特殊性在于它的請求“使用多部分/表單數據編碼提交”。根據OAuth1.0協(xié)議,Content-Type為multipart/form-data的HTTP請求的entity body不參與OAuth簽名。因此,上傳API的OAuth應該比其他普通API簡(jiǎn)單,因為簽名只涉及OAuth參數(以oauth_開(kāi)頭的一系列特殊參數)。因此,標準的簽名基字符串應該是:
  POSThttp%3A%2F %% 2Fstatuses%2Fupload.jsonoauth_consumer_key%3Dxxxxxxxxxx%26oauth_nonce%3D798014939%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1312912324%26oauth_version%3D1312912324%26oauth_version%3D1312912324%26oauth_ytoken0
  對應的標準授權頭應該是:
  OAuth oauth_consumer_key=xxxxxxxxxx、oauth_token=yyyyyyyyyy、oauth_signature_method=HMAC-SHA1、oauth_version=1.0、oauth_nonce=798014939、oauth_nonce=798014939、oauth_nonce=798014939、oauth_nonce=798014939、oauth33331231時(shí)間oauth_signature_method=HMAC-SHA1
  但是,您會(huì )收到:
  40107:Oauth 錯誤:signature_invalid!
  這是因為新浪微博上傳API的實(shí)現需要簽名基串收錄pic以外的參數。所以新浪微博需要的Signature Base String是這樣的:
  POSThttp%3A%2F%%2Fstatuses%2Fupload.jsonlat%3D37.78711200%26long%3D-122.40846000%26oauth_consumer_key%3Dxxxxxxxxxx%26oauth%258oth%258oth%26588oth%268588888888888885 _signature_method3 26oauth_timestamp%3D1312912886%26oauth_token%3Dyyyyyyyyyy%26oauth_version%3D1.0%26status%3DPic
  問(wèn)題出在這里:status、lat、long參數是在entity body中提交的。如前所述,它們不參與 OAuth 簽名。為了符合 OAuth 協(xié)議,必須將這些參數添加到 URL 查詢(xún)字符串或 Authorization 標頭中。
  規范的開(kāi)發(fā)者這樣做了,結果“錯了”。新浪微博服務(wù)器依舊返回:
  40107:Oauth 錯誤:signature_invalid!
  其實(shí)不管怎么折騰,只要遵循OAuth協(xié)議,肯定是甩不掉的,因為新浪微博不遵循OAuth協(xié)議。
  對于 Content-Type 為 multipart/form-data 的 HTTP 請求,新浪微博要求非二進(jìn)制參數(如上傳 API 中的 pic 參數)參與 OAuth 簽名,并且還要求這些參數是“非原創(chuàng )的” ”。換句話(huà)說(shuō),Signature Base String 必須收錄這些參數,但這些參數不能出現在 URL 查詢(xún)字符串或 Authorization 標頭中。這意味著(zhù)新浪微博服務(wù)器收到請求后,會(huì )從實(shí)體主體中提取這些參數進(jìn)行OAuth簽名驗證。再一次,對于 Content-Type 是 multipart/form-data 的 HTTP 請求,這違反了 OAuth 協(xié)議。但是在新浪微博上,我們必須違反OAuth協(xié)議才能通過(guò)OAuth驗證。
  即使你不考慮像我這樣費時(shí)費力的探索過(guò)程,新浪微博的非標準實(shí)現也給開(kāi)發(fā)者帶來(lái)了很多麻煩,因為它導致了很多OAuth庫的追隨OAuth 協(xié)議無(wú)法直接使用。
  在折騰的過(guò)程中,我還發(fā)現了另一個(gè)可怕的bug。如果pic的Content-Disposition頭部缺少filename參數,新浪微博也會(huì )返回“40107:Oauth Error:signature_invalid!”,雖然pic和OAuth沒(méi)有關(guān)系,雖然按照標準是不需要filename的,但實(shí)際上文件名在此處沒(méi)用。
  最后總結一下獲取新浪微博上傳API的“正確”方式:
  所有參數均以 multipart/form-data 格式提交,不能出現在 URL 查詢(xún)字符串或 Authorization 標頭中。除 pic 外的所有參數都輸入 Signature Base String 以參與 OAuth 簽名。 pic 的 Content-Disposition 頭必須收錄 filename 參數。
  官方論壇幫助不大,哭了很多,但是省的少。未做UTF-8編碼或URL編碼導致OAuth認證失敗是開(kāi)發(fā)者自身的錯。本文也適用于其他使用 multipart/form-data 編碼提交 HTTP 請求的 API,例如 update_profile_image。
  轉載原文 查看全部

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(這是第一篇:關(guān)于uploadAPI的OAuth驗證失敗問(wèn)題(組圖))
  新浪微博很受歡迎,開(kāi)放平臺很受歡迎,開(kāi)發(fā)者很受歡迎。
  開(kāi)發(fā)者受歡迎是因為新浪微博開(kāi)放平臺對開(kāi)發(fā)者非常不友好,其API從實(shí)現到文檔都很粗糙。
  API 實(shí)現不規范,可以容忍,但是文檔沒(méi)有解釋清楚,開(kāi)發(fā)者自己探索是很離譜的。新浪似乎還沒(méi)有來(lái)得及照顧第三方開(kāi)發(fā)者,開(kāi)放平臺現在只是“開(kāi)門(mén)見(jiàn)山”。結果就是開(kāi)發(fā)者折騰了很多沒(méi)有意義的東西,浪費時(shí)間!
  我寫(xiě)這一系列文章的目的是為了避免后來(lái)者犯同樣的罪。
  這是上傳AP??I OAuth認證失敗的第一篇。去論壇搜索上傳就知道有多少人受苦了。
  Upload API 的 OAuth 之所以難,部分是因為它的 HTTP 請求格式的特殊性,主要是因為新浪微博的實(shí)現令人難以置信。
  Upload API 的特殊性在于它的請求“使用多部分/表單數據編碼提交”。根據OAuth1.0協(xié)議,Content-Type為multipart/form-data的HTTP請求的entity body不參與OAuth簽名。因此,上傳API的OAuth應該比其他普通API簡(jiǎn)單,因為簽名只涉及OAuth參數(以oauth_開(kāi)頭的一系列特殊參數)。因此,標準的簽名基字符串應該是:
  POSThttp%3A%2F %% 2Fstatuses%2Fupload.jsonoauth_consumer_key%3Dxxxxxxxxxx%26oauth_nonce%3D798014939%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1312912324%26oauth_version%3D1312912324%26oauth_version%3D1312912324%26oauth_ytoken0
  對應的標準授權頭應該是:
  OAuth oauth_consumer_key=xxxxxxxxxx、oauth_token=yyyyyyyyyy、oauth_signature_method=HMAC-SHA1、oauth_version=1.0、oauth_nonce=798014939、oauth_nonce=798014939、oauth_nonce=798014939、oauth_nonce=798014939、oauth33331231時(shí)間oauth_signature_method=HMAC-SHA1
  但是,您會(huì )收到:
  40107:Oauth 錯誤:signature_invalid!
  這是因為新浪微博上傳API的實(shí)現需要簽名基串收錄pic以外的參數。所以新浪微博需要的Signature Base String是這樣的:
  POSThttp%3A%2F%%2Fstatuses%2Fupload.jsonlat%3D37.78711200%26long%3D-122.40846000%26oauth_consumer_key%3Dxxxxxxxxxx%26oauth%258oth%258oth%26588oth%268588888888888885 _signature_method3 26oauth_timestamp%3D1312912886%26oauth_token%3Dyyyyyyyyyy%26oauth_version%3D1.0%26status%3DPic
  問(wèn)題出在這里:status、lat、long參數是在entity body中提交的。如前所述,它們不參與 OAuth 簽名。為了符合 OAuth 協(xié)議,必須將這些參數添加到 URL 查詢(xún)字符串或 Authorization 標頭中。
  規范的開(kāi)發(fā)者這樣做了,結果“錯了”。新浪微博服務(wù)器依舊返回:
  40107:Oauth 錯誤:signature_invalid!
  其實(shí)不管怎么折騰,只要遵循OAuth協(xié)議,肯定是甩不掉的,因為新浪微博不遵循OAuth協(xié)議。
  對于 Content-Type 為 multipart/form-data 的 HTTP 請求,新浪微博要求非二進(jìn)制參數(如上傳 API 中的 pic 參數)參與 OAuth 簽名,并且還要求這些參數是“非原創(chuàng )的” ”。換句話(huà)說(shuō),Signature Base String 必須收錄這些參數,但這些參數不能出現在 URL 查詢(xún)字符串或 Authorization 標頭中。這意味著(zhù)新浪微博服務(wù)器收到請求后,會(huì )從實(shí)體主體中提取這些參數進(jìn)行OAuth簽名驗證。再一次,對于 Content-Type 是 multipart/form-data 的 HTTP 請求,這違反了 OAuth 協(xié)議。但是在新浪微博上,我們必須違反OAuth協(xié)議才能通過(guò)OAuth驗證。
  即使你不考慮像我這樣費時(shí)費力的探索過(guò)程,新浪微博的非標準實(shí)現也給開(kāi)發(fā)者帶來(lái)了很多麻煩,因為它導致了很多OAuth庫的追隨OAuth 協(xié)議無(wú)法直接使用。
  在折騰的過(guò)程中,我還發(fā)現了另一個(gè)可怕的bug。如果pic的Content-Disposition頭部缺少filename參數,新浪微博也會(huì )返回“40107:Oauth Error:signature_invalid!”,雖然pic和OAuth沒(méi)有關(guān)系,雖然按照標準是不需要filename的,但實(shí)際上文件名在此處沒(méi)用。
  最后總結一下獲取新浪微博上傳API的“正確”方式:
  所有參數均以 multipart/form-data 格式提交,不能出現在 URL 查詢(xún)字符串或 Authorization 標頭中。除 pic 外的所有參數都輸入 Signature Base String 以參與 OAuth 簽名。 pic 的 Content-Disposition 頭必須收錄 filename 參數。
  官方論壇幫助不大,哭了很多,但是省的少。未做UTF-8編碼或URL編碼導致OAuth認證失敗是開(kāi)發(fā)者自身的錯。本文也適用于其他使用 multipart/form-data 編碼提交 HTTP 請求的 API,例如 update_profile_image。
  轉載原文

使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站( api訪(fǎng)問(wèn):2019-07-15本文章(圖))

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 53 次瀏覽 ? 2021-12-31 11:28 ? 來(lái)自相關(guān)話(huà)題

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(
api訪(fǎng)問(wèn):2019-07-15本文章(圖))
  Python訪(fǎng)問(wèn)微博第三方API 2 訪(fǎng)問(wèn)用戶(hù)登錄和微博發(fā)布
  時(shí)間:2019-07-15
  本文章為大家介紹python訪(fǎng)問(wèn)微博第三方API 2訪(fǎng)問(wèn)用戶(hù)登錄和微博發(fā)布,主要包括python訪(fǎng)問(wèn)微博第三方API 2訪(fǎng)問(wèn)用戶(hù)登錄和微博發(fā)布使用示例、應用技巧、基礎總結知識點(diǎn)和注意事項,有一定的參考價(jià)值,有需要的朋友可以參考。
  Python訪(fǎng)問(wèn)微博第三方API 2 訪(fǎng)問(wèn)用戶(hù)登錄和微博發(fā)布
  # coding=utf-8
import requests
import json
import MySQLdb
from datetime import datetime
from flask import Flask, redirect, request
app = Flask(__name__)
# 全局變量token
token = {}
def get_ticket():
# App Key:13866668888 app key就是url中的 YOUR_CLIENT_ID
# YOUR_REGISTERED_REDIRECT_URI就是 http://test.chinasoft.com
client_id = 13866668888
redirect_url = "http://test.chinasoft.com/a"
url = 'https://api.weibo.com/oauth2/authorize?client_id={app_key}&response_type=code&redirect_uri={redirect_url}'.format(app_key = client_id, redirect_url = redirect_url)
return url
def get_token(code):
# App Secret:6dc11f2039
redirect_url = "http://test.chinasoft.com/a"
client_secret = "6dc11f2039"
client_id = 13866668888
url = "https://api.weibo.com/oauth2/a ... id%3D{client_id}&client_secret={client_secret}&grant_type=authorization_code&redirect_uri={redirect_url}&code={code}".format(client_id = client_id,client_secret = client_secret,redirect_url = redirect_url,code = code)
resp = requests.post(url)
global token
token = resp.json()
return token
def get_info(access_token, uid):
url = "https://api.weibo.com/2/users/show.json"
resp = requests.get(url, params = {
'access_token':access_token,
'uid':uid
})
return resp.json()
def get_conn():
""" 獲取mysql的連接"""
try:
conn = MySQLdb.connect(
host="localhost",
port=3306,
user="root",
password="root",
db="user_grade",
)
except MySQLdb.Error as e:
print("Error %d:%s" % (e.args[0], e.args[1]))
return conn
def weibo_share(access_token):
url = "https://api.weibo.com/2/statuses/share.json"
resp = requests.post(url, {
'access_token':access_token,
'status':'現在是北京時(shí)間:{0} http://test.chinasoft.com'.format(datetime.now())
})
return resp.json()
@app.route('/a')
def index():
code = request.args.get('code', None)
# 根據code獲取token
token = get_token(code)
# 獲取用戶(hù)信息
user_info = get_info(token['access_token'], token['uid'])
third_id = user_info['id']
nickname = user_info['screen_name']
headimg = user_info['profile_image_url']
# 獲取數據庫的連接,將用戶(hù)信息存入到數據庫中
# create table user(third_id int,nickname varchar(255),headimg varchar(1000));
conn = get_conn()
cur = conn.cursor()
# 注意 sql中的 values中的字段一定要加 單引號,否則會(huì )報錯
sql = "insert into user(third_id,nickname,headimg) values('{third_id}','{nickname}','{headimg}')".format(third_id = third_id,nickname = nickname,headimg = headimg)
cur.execute(sql)
conn.autocommit(True)
return json.dumps(user_info)
@app.route('/weibo')
def weibo():
ticket = get_ticket()
return redirect(ticket)
@app.route('/share')
def share():
ticket = get_ticket()
rest = weibo_share(token['access_token'])
return json.dumps(rest)
if __name__ == '__main__':
app.run(port=80, debug=True)
  登錄接口
  訪(fǎng)問(wèn)量:5000/微博
  獲取令牌 查看全部

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(
api訪(fǎng)問(wèn):2019-07-15本文章(圖))
  Python訪(fǎng)問(wèn)微博第三方API 2 訪(fǎng)問(wèn)用戶(hù)登錄和微博發(fā)布
  時(shí)間:2019-07-15
  本文章為大家介紹python訪(fǎng)問(wèn)微博第三方API 2訪(fǎng)問(wèn)用戶(hù)登錄和微博發(fā)布,主要包括python訪(fǎng)問(wèn)微博第三方API 2訪(fǎng)問(wèn)用戶(hù)登錄和微博發(fā)布使用示例、應用技巧、基礎總結知識點(diǎn)和注意事項,有一定的參考價(jià)值,有需要的朋友可以參考。
  Python訪(fǎng)問(wèn)微博第三方API 2 訪(fǎng)問(wèn)用戶(hù)登錄和微博發(fā)布
  # coding=utf-8
import requests
import json
import MySQLdb
from datetime import datetime
from flask import Flask, redirect, request
app = Flask(__name__)
# 全局變量token
token = {}
def get_ticket():
# App Key:13866668888 app key就是url中的 YOUR_CLIENT_ID
# YOUR_REGISTERED_REDIRECT_URI就是 http://test.chinasoft.com
client_id = 13866668888
redirect_url = "http://test.chinasoft.com/a"
url = 'https://api.weibo.com/oauth2/authorize?client_id={app_key}&response_type=code&redirect_uri={redirect_url}'.format(app_key = client_id, redirect_url = redirect_url)
return url
def get_token(code):
# App Secret:6dc11f2039
redirect_url = "http://test.chinasoft.com/a"
client_secret = "6dc11f2039"
client_id = 13866668888
url = "https://api.weibo.com/oauth2/a ... id%3D{client_id}&client_secret={client_secret}&grant_type=authorization_code&redirect_uri={redirect_url}&code={code}".format(client_id = client_id,client_secret = client_secret,redirect_url = redirect_url,code = code)
resp = requests.post(url)
global token
token = resp.json()
return token
def get_info(access_token, uid):
url = "https://api.weibo.com/2/users/show.json"
resp = requests.get(url, params = {
'access_token':access_token,
'uid':uid
})
return resp.json()
def get_conn():
""" 獲取mysql的連接"""
try:
conn = MySQLdb.connect(
host="localhost",
port=3306,
user="root",
password="root",
db="user_grade",
)
except MySQLdb.Error as e:
print("Error %d:%s" % (e.args[0], e.args[1]))
return conn
def weibo_share(access_token):
url = "https://api.weibo.com/2/statuses/share.json"
resp = requests.post(url, {
'access_token':access_token,
'status':'現在是北京時(shí)間:{0} http://test.chinasoft.com'.format(datetime.now())
})
return resp.json()
@app.route('/a')
def index():
code = request.args.get('code', None)
# 根據code獲取token
token = get_token(code)
# 獲取用戶(hù)信息
user_info = get_info(token['access_token'], token['uid'])
third_id = user_info['id']
nickname = user_info['screen_name']
headimg = user_info['profile_image_url']
# 獲取數據庫的連接,將用戶(hù)信息存入到數據庫中
# create table user(third_id int,nickname varchar(255),headimg varchar(1000));
conn = get_conn()
cur = conn.cursor()
# 注意 sql中的 values中的字段一定要加 單引號,否則會(huì )報錯
sql = "insert into user(third_id,nickname,headimg) values('{third_id}','{nickname}','{headimg}')".format(third_id = third_id,nickname = nickname,headimg = headimg)
cur.execute(sql)
conn.autocommit(True)
return json.dumps(user_info)
@app.route('/weibo')
def weibo():
ticket = get_ticket()
return redirect(ticket)
@app.route('/share')
def share():
ticket = get_ticket()
rest = weibo_share(token['access_token'])
return json.dumps(rest)
if __name__ == '__main__':
app.run(port=80, debug=True)
  登錄接口
  訪(fǎng)問(wèn)量:5000/微博
  獲取令牌

使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(文檔_V23.API錯誤代碼說(shuō)明()(圖))

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 61 次瀏覽 ? 2021-12-30 03:19 ? 來(lái)自相關(guān)話(huà)題

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(文檔_V23.API錯誤代碼說(shuō)明()(圖))
  文檔_V2
  3.API 錯誤碼描述地址:
  4.iOS SDK 地址:
  5.授權機制:
  授權機制說(shuō)明
  6.開(kāi)發(fā)者管理中心
  利用:
  在管理中心創(chuàng )建自己的應用后,會(huì )得到AppKey和App Secret
  這兩個(gè)值是初始化新浪微博SDK必須用到的兩個(gè)參數。
  執行登錄功能時(shí)可能遇到的錯誤如下
  1:訪(fǎng)問(wèn)錯誤提示
  
  表示:微博SDK初始化時(shí)設置的appRedirectURI和微博開(kāi)放平臺-開(kāi)發(fā)者管理中心-應用信息-高級信息-OAuth2.0 授權設置-授權回調頁(yè)面
  如果設定值不同,就會(huì )出現上述錯誤。
  
  
  2:調用新浪微博客戶(hù)端授權后,應用沒(méi)有正常返回。
  1:檢查URL類(lèi)型“URL方案”是否命名為:sinaweibosso。如圖添加AppID:
  
  2:在A(yíng)ppDelegate中是否實(shí)現了委托功能:
  -(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
NSLog(@"%@",url.scheme);
//如果涉及其他應用交互,請做如下判斷,例如:還可能和新浪微博進(jìn)行交互
if ([url.scheme isEqualToString:Key_weiXinAppID]) {
return [WXApi handleOpenURL:url delegate:self];
}else if ([url.scheme isEqualToString:[@"sinaweibosso" stringByAppendingPathExtension:Key_sinaWeiboAppID]])
{
return [[SinaWeiBoManage defaultInstance].sinaWeibo handleOpenURL:url];
}else
{
return YES;
}
}
  完成上述設置后,將無(wú)意外地響應授權結果。
  接下來(lái),我們主要開(kāi)始調用API與微博數據進(jìn)行交互。
  舉個(gè)簡(jiǎn)單的例子,如何獲取授權用戶(hù)的個(gè)人信息:
  NSMutableDictionary *params = [[NSMutableDictionary alloc] init];
[params setObject:userId forKey:@"uid"];
[sinaWeibo requestWithURL:@"users/show.json"
params:params
httpMethod:@"GET"
delegate:self];
  具體需要傳入的參數請參考官方API文檔。
  得到結果后,會(huì )響應委托成功或失?。?br />   這時(shí)候可以通過(guò)鏈接名來(lái)識別請求類(lèi)型:
  - (void)request:(SinaWeiboRequest *)request didFailWithError:(NSError *)error
{
//獲取關(guān)注列表
if ([request.url hasSuffix:@"friendships/friends.json"])
{
if ([delegate respondsToSelector:@selector(sinaWeiBoManage:withFriendListResult:withRequestDataType:isSuccess:)]) {
[delegate sinaWeiBoManage:self withFriendListResult:nil withRequestDataType:self.requestDataType isSuccess:NO];
}
}
}
  關(guān)于iOS 6內置微博功能:
  在iOS6中,蘋(píng)果集成了新浪微博的社交環(huán)境,所以如果用戶(hù)在設置界面對新浪微博賬號進(jìn)行了授權,就可以直接在我們的第三方應用中使用,用于發(fā)布微博等。
  先介紹兩個(gè)新框架
  他們是:
  Accounts.framework:用于在系統設置中獲取賬戶(hù)信息
  Social.framework:用于與第三方開(kāi)放平臺進(jìn)行數據交互。
  該過(guò)程分為兩個(gè)步驟:
  首先要知道用戶(hù)是否在系統設置中對相應的賬號進(jìn)行了授權。
  獲取到相應的賬號信息后,即可開(kāi)始與第三方開(kāi)放平臺進(jìn)行數據交互,代碼如下:
  // Create an account store object. 創(chuàng )建賬戶(hù)集合
ACAccountStore *accountStore = [[ACAccountStore alloc] init];
// Create an account type that ensures Twitter accounts are retrieved. 確定好 賬戶(hù)類(lèi)型 新浪微博 還是 Facebook 還是 Twitter
ACAccountType *accountType = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierSinaWeibo];
// Request access from the user to use their Twitter accounts. //異步請求 來(lái)得到對應類(lèi)型的賬戶(hù)信息
[accountStore requestAccessToAccountsWithType:accountType withCompletionHandler:^(BOOL granted, NSError *error) {
if(granted) {//如果 granted 返回 NO 表示一個(gè)賬戶(hù)都沒(méi)有設置
// Get the list of Twitter accounts.
NSArray *accountsArray = [accountStore accountsWithAccountType:accountType]; //可能存在多個(gè),看你要用哪個(gè),最好讓用戶(hù)選擇一下

// For the sake of brevity, we&#39;ll assume there is only one Twitter account present.
// You would ideally ask the user which account they want to tweet from, if there is more than one Twitter account present.
if ([accountsArray count] > 0) {
// Grab the initial Twitter account to tweet from.
ACAccount *sinaWeiboAccount = [accountsArray objectAtIndex:0];

NSMutableDictionary *params = [[NSMutableDictionary alloc] init];
[params setObject:@"一條新的微博" forKey:@"status"];
SLRequest *slRequest = [SLRequest requestForServiceType:SLServiceTypeSinaWeibo requestMethod:SLRequestMethodPOST URL:[NSURL URLWithString:@"https://open.weibo.cn/2/statuses/update.json"] parameters:params];
slRequest.account = sinaWeiboAccount;//這行代碼一定要賦值,負責數據交互一定失敗
[slRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
NSLog(@"%@ %@",urlResponse.URL,error);

NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingAllowFragments error:nil];
NSLog(@"%@",dic);
}];

}
}
}];
  獲得每個(gè) ACAccount 后,它就有了一個(gè)標識符。最好在用戶(hù)確認使用哪個(gè)賬號的時(shí)候保存,這樣下次可以直接通過(guò)下面的代碼獲取對應的賬號
  [accountStore accountWithIdentifier:sinaWeiboAccount.identifier];
  總結:
  SNS作為應用推廣的主要方式,必須認真研究。如何喚起和激發(fā)用戶(hù)的分享欲望,讓更多人知道你的應用,那么成功就在不遠處。 查看全部

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(文檔_V23.API錯誤代碼說(shuō)明()(圖))
  文檔_V2
  3.API 錯誤碼描述地址:
  4.iOS SDK 地址:
  5.授權機制:
  授權機制說(shuō)明
  6.開(kāi)發(fā)者管理中心
  利用:
  在管理中心創(chuàng )建自己的應用后,會(huì )得到AppKey和App Secret
  這兩個(gè)值是初始化新浪微博SDK必須用到的兩個(gè)參數。
  執行登錄功能時(shí)可能遇到的錯誤如下
  1:訪(fǎng)問(wèn)錯誤提示
  
  表示:微博SDK初始化時(shí)設置的appRedirectURI和微博開(kāi)放平臺-開(kāi)發(fā)者管理中心-應用信息-高級信息-OAuth2.0 授權設置-授權回調頁(yè)面
  如果設定值不同,就會(huì )出現上述錯誤。
  
  
  2:調用新浪微博客戶(hù)端授權后,應用沒(méi)有正常返回。
  1:檢查URL類(lèi)型“URL方案”是否命名為:sinaweibosso。如圖添加AppID:
  
  2:在A(yíng)ppDelegate中是否實(shí)現了委托功能:
  -(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
NSLog(@"%@",url.scheme);
//如果涉及其他應用交互,請做如下判斷,例如:還可能和新浪微博進(jìn)行交互
if ([url.scheme isEqualToString:Key_weiXinAppID]) {
return [WXApi handleOpenURL:url delegate:self];
}else if ([url.scheme isEqualToString:[@"sinaweibosso" stringByAppendingPathExtension:Key_sinaWeiboAppID]])
{
return [[SinaWeiBoManage defaultInstance].sinaWeibo handleOpenURL:url];
}else
{
return YES;
}
}
  完成上述設置后,將無(wú)意外地響應授權結果。
  接下來(lái),我們主要開(kāi)始調用API與微博數據進(jìn)行交互。
  舉個(gè)簡(jiǎn)單的例子,如何獲取授權用戶(hù)的個(gè)人信息:
  NSMutableDictionary *params = [[NSMutableDictionary alloc] init];
[params setObject:userId forKey:@"uid"];
[sinaWeibo requestWithURL:@"users/show.json"
params:params
httpMethod:@"GET"
delegate:self];
  具體需要傳入的參數請參考官方API文檔。
  得到結果后,會(huì )響應委托成功或失?。?br />   這時(shí)候可以通過(guò)鏈接名來(lái)識別請求類(lèi)型:
  - (void)request:(SinaWeiboRequest *)request didFailWithError:(NSError *)error
{
//獲取關(guān)注列表
if ([request.url hasSuffix:@"friendships/friends.json"])
{
if ([delegate respondsToSelector:@selector(sinaWeiBoManage:withFriendListResult:withRequestDataType:isSuccess:)]) {
[delegate sinaWeiBoManage:self withFriendListResult:nil withRequestDataType:self.requestDataType isSuccess:NO];
}
}
}
  關(guān)于iOS 6內置微博功能:
  在iOS6中,蘋(píng)果集成了新浪微博的社交環(huán)境,所以如果用戶(hù)在設置界面對新浪微博賬號進(jìn)行了授權,就可以直接在我們的第三方應用中使用,用于發(fā)布微博等。
  先介紹兩個(gè)新框架
  他們是:
  Accounts.framework:用于在系統設置中獲取賬戶(hù)信息
  Social.framework:用于與第三方開(kāi)放平臺進(jìn)行數據交互。
  該過(guò)程分為兩個(gè)步驟:
  首先要知道用戶(hù)是否在系統設置中對相應的賬號進(jìn)行了授權。
  獲取到相應的賬號信息后,即可開(kāi)始與第三方開(kāi)放平臺進(jìn)行數據交互,代碼如下:
  // Create an account store object. 創(chuàng )建賬戶(hù)集合
ACAccountStore *accountStore = [[ACAccountStore alloc] init];
// Create an account type that ensures Twitter accounts are retrieved. 確定好 賬戶(hù)類(lèi)型 新浪微博 還是 Facebook 還是 Twitter
ACAccountType *accountType = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierSinaWeibo];
// Request access from the user to use their Twitter accounts. //異步請求 來(lái)得到對應類(lèi)型的賬戶(hù)信息
[accountStore requestAccessToAccountsWithType:accountType withCompletionHandler:^(BOOL granted, NSError *error) {
if(granted) {//如果 granted 返回 NO 表示一個(gè)賬戶(hù)都沒(méi)有設置
// Get the list of Twitter accounts.
NSArray *accountsArray = [accountStore accountsWithAccountType:accountType]; //可能存在多個(gè),看你要用哪個(gè),最好讓用戶(hù)選擇一下

// For the sake of brevity, we&#39;ll assume there is only one Twitter account present.
// You would ideally ask the user which account they want to tweet from, if there is more than one Twitter account present.
if ([accountsArray count] > 0) {
// Grab the initial Twitter account to tweet from.
ACAccount *sinaWeiboAccount = [accountsArray objectAtIndex:0];

NSMutableDictionary *params = [[NSMutableDictionary alloc] init];
[params setObject:@"一條新的微博" forKey:@"status"];
SLRequest *slRequest = [SLRequest requestForServiceType:SLServiceTypeSinaWeibo requestMethod:SLRequestMethodPOST URL:[NSURL URLWithString:@"https://open.weibo.cn/2/statuses/update.json"] parameters:params];
slRequest.account = sinaWeiboAccount;//這行代碼一定要賦值,負責數據交互一定失敗
[slRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
NSLog(@"%@ %@",urlResponse.URL,error);

NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingAllowFragments error:nil];
NSLog(@"%@",dic);
}];

}
}
}];
  獲得每個(gè) ACAccount 后,它就有了一個(gè)標識符。最好在用戶(hù)確認使用哪個(gè)賬號的時(shí)候保存,這樣下次可以直接通過(guò)下面的代碼獲取對應的賬號
  [accountStore accountWithIdentifier:sinaWeiboAccount.identifier];
  總結:
  SNS作為應用推廣的主要方式,必須認真研究。如何喚起和激發(fā)用戶(hù)的分享欲望,讓更多人知道你的應用,那么成功就在不遠處。

使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(文本中要加入安全域名下的一個(gè)網(wǎng)址,敲黑板!)

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 67 次瀏覽 ? 2021-12-30 03:15 ? 來(lái)自相關(guān)話(huà)題

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(文本中要加入安全域名下的一個(gè)網(wǎng)址,敲黑板!)
  一、說(shuō)明
  2017-06-26 微博公告,對界面做了一些改動(dòng):
  statuses/repost 轉發(fā)一條微博
statuses/update 發(fā)布一條微博
statuses/upload 上傳圖片并發(fā)布一條微博
statuses/upload_url_text 發(fā)布一條微博同時(shí)指定上傳的圖片
statuses/destroy 刪除微博
  上面的接口被取消了。
 ?。ňW(wǎng)上大部分資料都是老界面寫(xiě)的,難怪我用老界面好久沒(méi)成功,汗)
  改用新界面:狀態(tài)/分享第三方分享鏈接到微博
  先看一下接口的說(shuō)明:
  
  圖片.png
  我們可以看到status參數的描述特別長(cháng)。
  有一句話(huà)需要特別注意:
  “同時(shí),正文中必須至少收錄
一個(gè)分享到微博的第三方網(wǎng)頁(yè)網(wǎng)址,且該網(wǎng)址只能是第三方(調用方)綁定域下的URL鏈接。綁定域在“我的”應用-應用信息-編輯基本應用信息-在“安全域名”中設置。
  官方用詞晦澀難懂,但通俗易懂:
  “文本中必須收錄
一個(gè)網(wǎng)址,該網(wǎng)址不能是隨機的,必須是應用后臺設置的安全域名下的網(wǎng)址?!?br />   二、具體用途
  什么是“安全域名”?我讀書(shū)少,所以不要假裝是 13。
  還記得在哪里填寫(xiě)“申請地址”和“申請資料”嗎?
  
  圖片.png
  然后它在右邊看起來(lái)像這樣:
  
  圖片.png
  你看見(jiàn)了嗎?這是一個(gè)安全的域名。如果您的信息在此處為空,請快速設置。
  需要注意的一件事是:
  
  圖片.png
  這個(gè)好像不用加“”,不然會(huì )報錯。
  如果它不起作用,您也可以使用我的:
 ?。ㄎ乙灿脛e人的)
  那么重點(diǎn)來(lái)了!敲黑板??!敲黑板?。?!
  我們需要在文本中添加安全域名下的URL,這次我們需要添加“”,像這樣:
  
  圖片.png
  發(fā)布后是這樣的:
  
  F7B691B(`05(LJ_NGOGW4`T.jpg
  如果沒(méi)有設置安全域名或文本中不收錄
安全域名,則會(huì )出現錯誤:
  {"error":"text not find domain!","error_code":10017,"request":"/2/statuses/share.json"}
  關(guān)于“必須做URLencode”,我沒(méi)有做這一步,但是不影響簡(jiǎn)單的微博發(fā)布。
  以后的問(wèn)題,可能只會(huì )出在這個(gè)地方,所以提醒一下。 查看全部

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(文本中要加入安全域名下的一個(gè)網(wǎng)址,敲黑板!)
  一、說(shuō)明
  2017-06-26 微博公告,對界面做了一些改動(dòng):
  statuses/repost 轉發(fā)一條微博
statuses/update 發(fā)布一條微博
statuses/upload 上傳圖片并發(fā)布一條微博
statuses/upload_url_text 發(fā)布一條微博同時(shí)指定上傳的圖片
statuses/destroy 刪除微博
  上面的接口被取消了。
 ?。ňW(wǎng)上大部分資料都是老界面寫(xiě)的,難怪我用老界面好久沒(méi)成功,汗)
  改用新界面:狀態(tài)/分享第三方分享鏈接到微博
  先看一下接口的說(shuō)明:
  
  圖片.png
  我們可以看到status參數的描述特別長(cháng)。
  有一句話(huà)需要特別注意:
  “同時(shí),正文中必須至少收錄
一個(gè)分享到微博的第三方網(wǎng)頁(yè)網(wǎng)址,且該網(wǎng)址只能是第三方(調用方)綁定域下的URL鏈接。綁定域在“我的”應用-應用信息-編輯基本應用信息-在“安全域名”中設置。
  官方用詞晦澀難懂,但通俗易懂:
  “文本中必須收錄
一個(gè)網(wǎng)址,該網(wǎng)址不能是隨機的,必須是應用后臺設置的安全域名下的網(wǎng)址?!?br />   二、具體用途
  什么是“安全域名”?我讀書(shū)少,所以不要假裝是 13。
  還記得在哪里填寫(xiě)“申請地址”和“申請資料”嗎?
  
  圖片.png
  然后它在右邊看起來(lái)像這樣:
  
  圖片.png
  你看見(jiàn)了嗎?這是一個(gè)安全的域名。如果您的信息在此處為空,請快速設置。
  需要注意的一件事是:
  
  圖片.png
  這個(gè)好像不用加“”,不然會(huì )報錯。
  如果它不起作用,您也可以使用我的:
 ?。ㄎ乙灿脛e人的)
  那么重點(diǎn)來(lái)了!敲黑板??!敲黑板?。?!
  我們需要在文本中添加安全域名下的URL,這次我們需要添加“”,像這樣:
  
  圖片.png
  發(fā)布后是這樣的:
  
  F7B691B(`05(LJ_NGOGW4`T.jpg
  如果沒(méi)有設置安全域名或文本中不收錄
安全域名,則會(huì )出現錯誤:
  {"error":"text not find domain!","error_code":10017,"request":"/2/statuses/share.json"}
  關(guān)于“必須做URLencode”,我沒(méi)有做這一步,但是不影響簡(jiǎn)單的微博發(fā)布。
  以后的問(wèn)題,可能只會(huì )出在這個(gè)地方,所以提醒一下。

使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(新浪微博開(kāi)放平臺API的調用和TWITTER接口一樣,都是受限的)

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 55 次瀏覽 ? 2021-12-29 19:10 ? 來(lái)自相關(guān)話(huà)題

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(新浪微博開(kāi)放平臺API的調用和TWITTER接口一樣,都是受限的)
  新浪微博開(kāi)放平臺API調用與TWITTER接口相同,均以小時(shí)為單位進(jìn)行限制和限制。
  他有兩個(gè)限制原則
  1.用戶(hù)不按IP限制登錄,每小時(shí)1000次
  2. 用戶(hù)以基于用戶(hù)的限制登錄,每小時(shí)1000次
  如果應用是用戶(hù)未登錄,則IP被限制。建議登錄破解瓶頸,否則不討論。
  新浪給出了具體限制
  開(kāi)發(fā)者可以通過(guò) rate_limit_status 接口查看調用頻率
  rate_limit_status 接口文檔
  接口返回如下信息
  數組([remaining_hits] =&gt; 999 [hourly_limit] =&gt; 1000 [reset_time_in_seconds] =&gt; 2717 [reset_time] =&gt; 12 月 14 日星期二 17:00:00 +0800 2010)
  代表
  剩余數量為999次,
  每小時(shí)限制1000次,
  計數器清零剩余時(shí)間2717秒,
  下次重置時(shí)間為17:00。
  這樣的調用頻率對于非授權的小應用來(lái)說(shuō)已經(jīng)不夠用了。最簡(jiǎn)單的方法是使用多個(gè)賬號和多個(gè)APP_KEY,相當于做一個(gè)賬號輪詢(xún)。
  首先,多注冊幾個(gè)微博賬號,將它們存儲在一個(gè)數組中,每次隨機調用一個(gè),這樣可以輕松使限制達到3000。
  $wb_id = array(,, );
  列表($wb_name,$wb_password)=explode(“|”,$wb_id[array_rand($wb_id)]);
  如果用同樣的方法列出幾個(gè)APP_KEY,重復組合,就會(huì )更多。比如2個(gè)APP_KEY,3個(gè)賬號,上限可以達到6000。
  我個(gè)人用了3個(gè)APP_KEY,4個(gè)賬號,每小時(shí)1.2萬(wàn)就夠了。
  快速注冊微博賬號的另一種方式
  第一步,
  去gmail注冊一個(gè)長(cháng)賬號,多長(cháng)時(shí)間?反正越長(cháng)越好,一個(gè)原則信比你想注冊的微博賬號長(cháng)
  例如
  第二步,
  使用此賬號在新浪注冊
  第一次使用
  第二次使用
  第三次使用
  ....
  以此類(lèi)推,一個(gè)郵箱可以注冊多個(gè)新浪微博。無(wú)需來(lái)回重新注冊郵箱。 查看全部

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(新浪微博開(kāi)放平臺API的調用和TWITTER接口一樣,都是受限的)
  新浪微博開(kāi)放平臺API調用與TWITTER接口相同,均以小時(shí)為單位進(jìn)行限制和限制。
  他有兩個(gè)限制原則
  1.用戶(hù)不按IP限制登錄,每小時(shí)1000次
  2. 用戶(hù)以基于用戶(hù)的限制登錄,每小時(shí)1000次
  如果應用是用戶(hù)未登錄,則IP被限制。建議登錄破解瓶頸,否則不討論。
  新浪給出了具體限制
  開(kāi)發(fā)者可以通過(guò) rate_limit_status 接口查看調用頻率
  rate_limit_status 接口文檔
  接口返回如下信息
  數組([remaining_hits] =&gt; 999 [hourly_limit] =&gt; 1000 [reset_time_in_seconds] =&gt; 2717 [reset_time] =&gt; 12 月 14 日星期二 17:00:00 +0800 2010)
  代表
  剩余數量為999次,
  每小時(shí)限制1000次,
  計數器清零剩余時(shí)間2717秒,
  下次重置時(shí)間為17:00。
  這樣的調用頻率對于非授權的小應用來(lái)說(shuō)已經(jīng)不夠用了。最簡(jiǎn)單的方法是使用多個(gè)賬號和多個(gè)APP_KEY,相當于做一個(gè)賬號輪詢(xún)。
  首先,多注冊幾個(gè)微博賬號,將它們存儲在一個(gè)數組中,每次隨機調用一個(gè),這樣可以輕松使限制達到3000。
  $wb_id = array(,, );
  列表($wb_name,$wb_password)=explode(“|”,$wb_id[array_rand($wb_id)]);
  如果用同樣的方法列出幾個(gè)APP_KEY,重復組合,就會(huì )更多。比如2個(gè)APP_KEY,3個(gè)賬號,上限可以達到6000。
  我個(gè)人用了3個(gè)APP_KEY,4個(gè)賬號,每小時(shí)1.2萬(wàn)就夠了。
  快速注冊微博賬號的另一種方式
  第一步,
  去gmail注冊一個(gè)長(cháng)賬號,多長(cháng)時(shí)間?反正越長(cháng)越好,一個(gè)原則信比你想注冊的微博賬號長(cháng)
  例如
  第二步,
  使用此賬號在新浪注冊
  第一次使用
  第二次使用
  第三次使用
  ....
  以此類(lèi)推,一個(gè)郵箱可以注冊多個(gè)新浪微博。無(wú)需來(lái)回重新注冊郵箱。

使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站!)

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 54 次瀏覽 ? 2021-12-28 09:01 ? 來(lái)自相關(guān)話(huà)題

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站!)
  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站!開(kāi)放平臺開(kāi)放了不止一項開(kāi)放接口,同時(shí)還提供數據抓取接口供大家方便快捷的搜索到數據。歡迎大家使用新浪微博開(kāi)放平臺,有需要的朋友可以私信我。如果你也需要一份專(zhuān)業(yè)的微博python開(kāi)發(fā)指南,歡迎在簡(jiǎn)書(shū)留言。
  用python保存每條微博到excel表。需要轉載/收藏微博時(shí),按比例分析轉載數量獲取轉發(fā)數量、點(diǎn)贊數量、評論數量。根據相應關(guān)鍵字追加微博,保存在excel表格中。
  github-myblogpicker-知乎專(zhuān)欄微博數據庫文檔??梢愿鶕枰ㄖ圃鰟h改查,相當不錯。
  爬蟲(chóng)和數據庫分析類(lèi)庫不錯,
  即刻采集了最受歡迎排行榜、發(fā)現頻道排行榜、問(wèn)答、評論排行榜、特色排行榜、熱門(mén)采訪(fǎng)等數十大排行榜分類(lèi)。通過(guò)直接獲取公共注冊賬號的公共發(fā)言、評論數據,或者分析出不同用戶(hù)的喜好,滿(mǎn)足你想知道某一條微博是否被采集的需求。例如:根據發(fā)起發(fā)起人、話(huà)題類(lèi)型、話(huà)題熱度、發(fā)帖時(shí)間、微博簡(jiǎn)介等分析微博熱度,以及用戶(hù)的最?lèi)?ài)。
  文章采集方面,還有新浪微博采集器這是一款相當好用的采集器,直接下載安裝,不要wifi什么都,隨用隨開(kāi),實(shí)時(shí)采集,采自己想采的數據,
  foobar2000, 查看全部

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站!)
  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站!開(kāi)放平臺開(kāi)放了不止一項開(kāi)放接口,同時(shí)還提供數據抓取接口供大家方便快捷的搜索到數據。歡迎大家使用新浪微博開(kāi)放平臺,有需要的朋友可以私信我。如果你也需要一份專(zhuān)業(yè)的微博python開(kāi)發(fā)指南,歡迎在簡(jiǎn)書(shū)留言。
  用python保存每條微博到excel表。需要轉載/收藏微博時(shí),按比例分析轉載數量獲取轉發(fā)數量、點(diǎn)贊數量、評論數量。根據相應關(guān)鍵字追加微博,保存在excel表格中。
  github-myblogpicker-知乎專(zhuān)欄微博數據庫文檔??梢愿鶕枰ㄖ圃鰟h改查,相當不錯。
  爬蟲(chóng)和數據庫分析類(lèi)庫不錯,
  即刻采集了最受歡迎排行榜、發(fā)現頻道排行榜、問(wèn)答、評論排行榜、特色排行榜、熱門(mén)采訪(fǎng)等數十大排行榜分類(lèi)。通過(guò)直接獲取公共注冊賬號的公共發(fā)言、評論數據,或者分析出不同用戶(hù)的喜好,滿(mǎn)足你想知道某一條微博是否被采集的需求。例如:根據發(fā)起發(fā)起人、話(huà)題類(lèi)型、話(huà)題熱度、發(fā)帖時(shí)間、微博簡(jiǎn)介等分析微博熱度,以及用戶(hù)的最?lèi)?ài)。
  文章采集方面,還有新浪微博采集器這是一款相當好用的采集器,直接下載安裝,不要wifi什么都,隨用隨開(kāi),實(shí)時(shí)采集,采自己想采的數據,
  foobar2000,

使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(一個(gè)自動(dòng)發(fā)布新浪微博的機器人(圖)分享(組圖) )

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 79 次瀏覽 ? 2021-12-26 03:11 ? 來(lái)自相關(guān)話(huà)題

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(一個(gè)自動(dòng)發(fā)布新浪微博的機器人(圖)分享(組圖)
)
  最近在研究使用Python制作各種類(lèi)型的機器人。今天給大家分享一個(gè)自動(dòng)發(fā)布新浪微博的機器人。
  基本思想
  其實(shí)實(shí)現一個(gè)簡(jiǎn)單的微博機器人并不難。你只需要每天準時(shí)找到要發(fā)布的素材(一般是爬蟲(chóng)),然后通過(guò)微博開(kāi)放的API接口自動(dòng)發(fā)布。
  材料
  素材方面,我這里選擇的是金山詞霸的每日一句英文,我們可以爬取本網(wǎng)站的相關(guān)信息,組成我們的微博素材。
  微博接口
  微博為開(kāi)發(fā)者提供開(kāi)放平臺
  當然,在使用這個(gè)平臺之前,我們仍然需要注冊并創(chuàng )建一個(gè)應用程序。比如像我一樣,創(chuàng )建一個(gè)應用程序
  
  然后我們還需要設置一個(gè)安全域名(以后發(fā)布微博時(shí)會(huì )用到),在應用信息-&gt;基本信息中設置。
  
  還需要設置應用回調地址,在應用信息-&gt;高級信息中設置。
  
  當然,對于微博API的調用,我們可以使用其他人打包的第三方庫,操作起來(lái)更加方便。我這里用了一個(gè)叫“weibo”的庫,直接用pip安裝。
  pip 安裝微博
  但是我遇到了一個(gè)安裝問(wèn)題,錯誤如下
  Traceback (most recent call last):
File "setup.py", line 15, in
long_description=open(&#39;README.rst&#39;).read(),
UnicodeDecodeError: &#39;gbk&#39; codec can&#39;t decode byte 0xae in position 241: illegal multibyte sequence
  好像是編碼問(wèn)題,我們可以通過(guò)修改源代碼來(lái)規避
  
  long_description=open(&#39;README.rst&#39;, encoding=&#39;utf-8&#39;).read(),
  python setup.py build
python setup.py install
  至此就可以成功安裝微博庫了
  準備工作和寫(xiě)作思路就是這些,下面我們來(lái)看看具體的過(guò)程和代碼
  自動(dòng)發(fā)布微博
  根據微博庫的文檔,使用它來(lái)操作微博是比較容易的。您只需要在我們創(chuàng )建微博應用時(shí)提供App Key和App Secret以及應用回調地址信息即可。簡(jiǎn)單的調用代碼如下
  from weibo import Client
c = Client(&#39;App Key&#39;, &#39;App Secret&#39;, &#39;https://www.luobodazahui.top&#39;, username=&#39;username&#39;, password=&#39;password&#39;)
c.post(&#39;statuses/share&#39;, status=&#39;haha&#39; + 安全域名)
  我們運行代碼,如果沒(méi)有任何反應,我們將可以在該帳戶(hù)下的微博中看到剛剛發(fā)布的微博。
  
  最簡(jiǎn)單的微博已經(jīng)發(fā)布成功了,那么我們可以發(fā)布帶圖片的微博,我們試試吧
  根據接口status/share的文檔,我們可以傳入pic參數來(lái)上傳圖片
  
  我們傳入 pic 參數并嘗試
  f = open(&#39;4.png&#39;, &#39;rb&#39;)
c.post(&#39;statuses/share&#39;, status=&#39;haha&#39; + 安全域名, pic=f)
f.close()
  是的,它可以正常發(fā)布帶圖片的微博
  
  那么現在微博的自動(dòng)發(fā)布就完成了,下面我們來(lái)看看如何自動(dòng)獲取微博素材
  微博素材
  對于金山詞霸的每日一句,我們可以使用以下API獲取每日信息
  可以看到界面返回如下信息
  
  我們可以直接使用requests庫來(lái)調用這個(gè)接口
  import requests
url = &#39;http://open.iciba.com/dsapi/&#39;
res = requests.get(url)
content_e = res.json()[&#39;content&#39;]
content_c = res.json()[&#39;note&#39;]
content = content_e + &#39;\n&#39; + content_c
content_t = res.json()[&#39;picture2&#39;]
  現在我們封裝兩個(gè)函數來(lái)完成功能
  def weibo(content, picture):
ff = requests.get(picture).content
c = Client(app_key, app_secret, &#39;https://www.luobodazahui.top&#39;, username=username, password=password)
c.post(&#39;statuses/share&#39;, status=content + &#39;https://www.luobodazahui.com&#39;, pic=ff)
def auto_weibo():
url = &#39;http://open.iciba.com/dsapi/&#39;
res = requests.get(url)
content_e = res.json()[&#39;content&#39;]
content_c = res.json()[&#39;note&#39;]
content = content_e + &#39;\n&#39; + content_c
content_t = res.json()[&#39;picture2&#39;]
weibo(content, content_t)
return &#39;OK&#39;
  現在我們可以創(chuàng )建一個(gè)定時(shí)任務(wù),每天7點(diǎn)運行腳本。
  0 7 * * * python auto_weibo.py
  最終效果如下
   查看全部

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(一個(gè)自動(dòng)發(fā)布新浪微博的機器人(圖)分享(組圖)
)
  最近在研究使用Python制作各種類(lèi)型的機器人。今天給大家分享一個(gè)自動(dòng)發(fā)布新浪微博的機器人。
  基本思想
  其實(shí)實(shí)現一個(gè)簡(jiǎn)單的微博機器人并不難。你只需要每天準時(shí)找到要發(fā)布的素材(一般是爬蟲(chóng)),然后通過(guò)微博開(kāi)放的API接口自動(dòng)發(fā)布。
  材料
  素材方面,我這里選擇的是金山詞霸的每日一句英文,我們可以爬取本網(wǎng)站的相關(guān)信息,組成我們的微博素材。
  微博接口
  微博為開(kāi)發(fā)者提供開(kāi)放平臺
  當然,在使用這個(gè)平臺之前,我們仍然需要注冊并創(chuàng )建一個(gè)應用程序。比如像我一樣,創(chuàng )建一個(gè)應用程序
  
  然后我們還需要設置一個(gè)安全域名(以后發(fā)布微博時(shí)會(huì )用到),在應用信息-&gt;基本信息中設置。
  
  還需要設置應用回調地址,在應用信息-&gt;高級信息中設置。
  
  當然,對于微博API的調用,我們可以使用其他人打包的第三方庫,操作起來(lái)更加方便。我這里用了一個(gè)叫“weibo”的庫,直接用pip安裝。
  pip 安裝微博
  但是我遇到了一個(gè)安裝問(wèn)題,錯誤如下
  Traceback (most recent call last):
File "setup.py", line 15, in
long_description=open(&#39;README.rst&#39;).read(),
UnicodeDecodeError: &#39;gbk&#39; codec can&#39;t decode byte 0xae in position 241: illegal multibyte sequence
  好像是編碼問(wèn)題,我們可以通過(guò)修改源代碼來(lái)規避
  
  long_description=open(&#39;README.rst&#39;, encoding=&#39;utf-8&#39;).read(),
  python setup.py build
python setup.py install
  至此就可以成功安裝微博庫了
  準備工作和寫(xiě)作思路就是這些,下面我們來(lái)看看具體的過(guò)程和代碼
  自動(dòng)發(fā)布微博
  根據微博庫的文檔,使用它來(lái)操作微博是比較容易的。您只需要在我們創(chuàng )建微博應用時(shí)提供App Key和App Secret以及應用回調地址信息即可。簡(jiǎn)單的調用代碼如下
  from weibo import Client
c = Client(&#39;App Key&#39;, &#39;App Secret&#39;, &#39;https://www.luobodazahui.top&#39;, username=&#39;username&#39;, password=&#39;password&#39;)
c.post(&#39;statuses/share&#39;, status=&#39;haha&#39; + 安全域名)
  我們運行代碼,如果沒(méi)有任何反應,我們將可以在該帳戶(hù)下的微博中看到剛剛發(fā)布的微博。
  
  最簡(jiǎn)單的微博已經(jīng)發(fā)布成功了,那么我們可以發(fā)布帶圖片的微博,我們試試吧
  根據接口status/share的文檔,我們可以傳入pic參數來(lái)上傳圖片
  
  我們傳入 pic 參數并嘗試
  f = open(&#39;4.png&#39;, &#39;rb&#39;)
c.post(&#39;statuses/share&#39;, status=&#39;haha&#39; + 安全域名, pic=f)
f.close()
  是的,它可以正常發(fā)布帶圖片的微博
  
  那么現在微博的自動(dòng)發(fā)布就完成了,下面我們來(lái)看看如何自動(dòng)獲取微博素材
  微博素材
  對于金山詞霸的每日一句,我們可以使用以下API獲取每日信息
  可以看到界面返回如下信息
  
  我們可以直接使用requests庫來(lái)調用這個(gè)接口
  import requests
url = &#39;http://open.iciba.com/dsapi/&#39;
res = requests.get(url)
content_e = res.json()[&#39;content&#39;]
content_c = res.json()[&#39;note&#39;]
content = content_e + &#39;\n&#39; + content_c
content_t = res.json()[&#39;picture2&#39;]
  現在我們封裝兩個(gè)函數來(lái)完成功能
  def weibo(content, picture):
ff = requests.get(picture).content
c = Client(app_key, app_secret, &#39;https://www.luobodazahui.top&#39;, username=username, password=password)
c.post(&#39;statuses/share&#39;, status=content + &#39;https://www.luobodazahui.com&#39;, pic=ff)
def auto_weibo():
url = &#39;http://open.iciba.com/dsapi/&#39;
res = requests.get(url)
content_e = res.json()[&#39;content&#39;]
content_c = res.json()[&#39;note&#39;]
content = content_e + &#39;\n&#39; + content_c
content_t = res.json()[&#39;picture2&#39;]
weibo(content, content_t)
return &#39;OK&#39;
  現在我們可以創(chuàng )建一個(gè)定時(shí)任務(wù),每天7點(diǎn)運行腳本。
  0 7 * * * python auto_weibo.py
  最終效果如下
  

使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(微博模擬登錄這是本次爬取 )

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 59 次瀏覽 ? 2021-12-26 00:06 ? 來(lái)自相關(guān)話(huà)題

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(微博模擬登錄這是本次爬取
)
  微博模擬登錄
  這是這次爬取的網(wǎng)址:
  一、請求分析
  找到登錄位置,填寫(xiě)用戶(hù)名和密碼登錄
  
  查看響應此請求的數據
  
  這是來(lái)自響應的數據,保存它
  exectime: 8
nonce: "HW9VSX"
pcid: "gz-4ede4c6269a09f5b7a6490f790b4aa944eec"
pubkey: "EB2A38568661887FA180BDDB5CABD5F21C7BFD59C090CB2D245A87AC253062882729293E5506350508E7F9AA3BB77F4333231490F915F6D63C55FE2F08A49B353F444AD3993CACC02DB784ABBB8E42A9B1BBFFFB38BE18D78E87A0E41B9B8F73A928EE0CCEE1F6739884B9777E4FE9E88A1BBE495927AC4A799B3181D6442443"
retcode: 0
rsakv: "1330428213"
servertime: 1568257059
  繼續完善登錄操作,輸入密碼,點(diǎn)擊登錄按鈕
  
  經(jīng)過(guò)分析,發(fā)現改變的參數是sp、nonce、servetime。servetime 是當前時(shí)間戳,我們只需要找到另外兩個(gè)參數的生成方法即可。對了,su的參數是base64加密生成的
  二、求sp,nonce的加密方式
  這次我不會(huì )使用搜索關(guān)鍵字來(lái)查找加密位置。
  
  找到調用函數的位置,打個(gè)斷點(diǎn),然后登錄
  
  經(jīng)過(guò)js代碼流程調試和分析,我們終于找到了加密的位置
  
  簡(jiǎn)單介紹如何調試js代碼
  
  找到sp,nonce的位置,通過(guò)python代碼實(shí)現其加密方法
  
  sp是通過(guò)rsa加密和加密生成的。rsa的具體用法可以通過(guò)百度查到?;蛘咄ㄟ^(guò)sha1加密生成。至于他是怎么得到me.rsaPubkey的,他只是在我們點(diǎn)擊登錄之前發(fā)送了一個(gè)請求,該請求的響應數據中收錄
了它。如果你測試更多次,你會(huì )發(fā)現這個(gè)值是固定的。所以我們也可以直接使用它而無(wú)需請求訪(fǎng)問(wèn)。
  nonce:在沒(méi)有點(diǎn)擊登錄之前,它也出現在請求的響應數據中。但是,我們多次點(diǎn)擊登錄,都沒(méi)有找到這個(gè)請求。nonce 的值每次都不同。所以必須是本地js文件的某個(gè)函數生成的,不需要請求服務(wù)器去獲取。我們在這里找到了 nonce 生成函數
  
  
  import random
import rsa
import hashlib
from binascii import b2a_hex
def get_nonce(n):
result = ""
random_str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
for i in range(n):
index = random.randint(0, len(random_str) - 1)
result += random_str[index]
return result
def get_sp_rsa(password, servertime, nonce):
key = "EB2A38568661887FA180BDDB5CABD5F21C7BFD59C090CB2D245A87AC253062882729293E5506350508E7F9AA3BB77F4333231490F915F6D63C55FE2F08A49B353F444AD3993CACC02DB784ABBB8E42A9B1BBFFFB38BE18D78E87A0E41B9B8F73A928EE0CCEE1F6739884B9777E4FE9E88A1BBE495927AC4A799B3181D6442443"
pubkey = rsa.PublicKey(int(key, 16), int("10001", 16))
res = rsa.encrypt(bytes("" + "\t".join([servertime, nonce]) + "\n" + password,encoding="utf-8"), pubkey)
return b2a_hex(res)
def get_sp_sha1(password, servertime, nonce):
res = hashlib.sha1(bytes("" + hashlib.sha1(bytes(hashlib.sha1(bytes(password, encoding="utf-8")).hexdigest(),encoding="utf-8")).hexdigest() + servertime + nonce,encoding="utf-8")).hexdigest()
return res
  三、響應數據
  請求參數分析基本完成,這次輸入正確的用戶(hù)名和密碼。響應數據是什么?
  
  打開(kāi)fiddler,然后退出當前賬號,重新登錄。fiddler 上會(huì )有很多請求。找到需要的請求,查看響應內容
  
  
  
  這樣做時(shí),每個(gè)響應都將設置 cookie。所以按照上面的流程,識別登錄的cookie肯定是可用的。之后,就拿著(zhù)這個(gè)cookie做其他的操作吧。
  最后附上代碼
  import requests, random, time, rsa, hashlib, base64, re, json
from binascii import b2a_hex
class WeiBo:
def __init__(self):
self.session = requests.Session()
self.headers = {
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36"
}
def login(self, account, password):
api = "https://login.sina.com.cn/sso/ ... in.js(v1.4.19)"
nonce = self._get_nonce()
servertime = self._get_now_time()
sp = self._get_sp_rsa(password, servertime, nonce)
su = self._get_su(account)
data = {
"entry": "weibo",
"gateway": "1",
"from": "",
"savestate": "7",
"qrcode_flag": "false",
"useticket": "1",
"pagerefer": "https://login.sina.com.cn/cros ... ot%3B,
"vsnf": "1",
"su": su,
"service": "miniblog",
"servertime": servertime,
"nonce": nonce,
"pwencode": "rsa2",
"rsakv": "1330428213",
"sp": sp,
"sr": "1920*1080",
"encoding": "UTF - 8",
"prelt": "149",
"url": "https://weibo.com/ajaxlogin.ph ... ot%3B,
"returntype": "META",
}
headers = self.headers.copy()
headers.update({
"Host": "login.sina.com.cn",
"Origin": "https://weibo.com",
"Referer": "https://weibo.com/"
})
response = self.session.post(api, headers=headers, data=data, allow_redirects=False)
search_result = self._re_search("location.replace\(\"(.*?)\"", response.text)
redirct_url = search_result and search_result.group(1)
if not redirct_url:
raise Exception("重定向url獲取失敗")
response = self.session.get(redirct_url, headers=headers.update({
"Referer": "https://login.sina.com.cn/sso/ ... in.js(v1.4.19)"
}), allow_redirects=False)
search_result = self._re_search('"arrURL":(.*?)}', response.text)
redirct_urls = search_result and search_result.group(1)
if not redirct_urls:
raise Exception("重定向url獲取失敗")
redirct_url_list = json.loads(redirct_urls)
userId = ""
for url in redirct_url_list:
response = self.session.get(url, headers=self.headers)
if url.startswith("https://passport.weibo.com/wbsso/login"):
userId = self._re_search('"uniqueid":"(.*?)"', response.text).group(1)
if not userId:
raise Exception("userId獲取失敗")
user_details_url = "https://weibo.com/u/{}/home?wvr=5&lf=reg".format(userId)
response = self.session.get(user_details_url, headers={
"Referer": "https://weibo.com/",
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36"
})
if self._re_search(userId, response.text):
print("登錄成功")
print(self.session.cookies)
else:
print("登錄失敗")
def _get_nonce(self):
nonce = ""
random_str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
for i in range(5):
index = random.randint(0, len(random_str) - 1)
nonce += random_str[index]
return nonce
def _get_now_time(self):
return str(int(time.time()))
def _get_sp_rsa(self, password, servertime, nonce):
key = "EB2A38568661887FA180BDDB5CABD5F21C7BFD59C090CB2D245A87AC253062882729293E5506350508E7F9AA3BB77F4333231490F915F6D63C55FE2F08A49B353F444AD3993CACC02DB784ABBB8E42A9B1BBFFFB38BE18D78E87A0E41B9B8F73A928EE0CCEE1F6739884B9777E4FE9E88A1BBE495927AC4A799B3181D6442443"
pubkey = rsa.PublicKey(int(key, 16), int("10001", 16))
res = rsa.encrypt(bytes("" + "\t".join([servertime, nonce]) + "\n" + password, encoding="utf-8"), pubkey)
return b2a_hex(res)
def _get_sp_sha1(self, password, servertime, nonce):
res = hashlib.sha1(bytes("" + hashlib.sha1(bytes(hashlib.sha1(bytes(password, encoding="utf-8")).hexdigest(),
encoding="utf-8")).hexdigest() + servertime + nonce,
encoding="utf-8")).hexdigest()
return res
def _get_su(self, account):
return str(base64.b64encode(bytes(account, encoding="utf-8")), encoding="utf-8")
def _re_search(self, pattern, html):
return re.search(pattern, html, re.S)
def test(self):
self.login("18716758777", "123456")
if __name__ == '__main__':
wb = WeiBo()
wb.test() 查看全部

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(微博模擬登錄這是本次爬取
)
  微博模擬登錄
  這是這次爬取的網(wǎng)址:
  一、請求分析
  找到登錄位置,填寫(xiě)用戶(hù)名和密碼登錄
  
  查看響應此請求的數據
  
  這是來(lái)自響應的數據,保存它
  exectime: 8
nonce: "HW9VSX"
pcid: "gz-4ede4c6269a09f5b7a6490f790b4aa944eec"
pubkey: "EB2A38568661887FA180BDDB5CABD5F21C7BFD59C090CB2D245A87AC253062882729293E5506350508E7F9AA3BB77F4333231490F915F6D63C55FE2F08A49B353F444AD3993CACC02DB784ABBB8E42A9B1BBFFFB38BE18D78E87A0E41B9B8F73A928EE0CCEE1F6739884B9777E4FE9E88A1BBE495927AC4A799B3181D6442443"
retcode: 0
rsakv: "1330428213"
servertime: 1568257059
  繼續完善登錄操作,輸入密碼,點(diǎn)擊登錄按鈕
  
  經(jīng)過(guò)分析,發(fā)現改變的參數是sp、nonce、servetime。servetime 是當前時(shí)間戳,我們只需要找到另外兩個(gè)參數的生成方法即可。對了,su的參數是base64加密生成的
  二、求sp,nonce的加密方式
  這次我不會(huì )使用搜索關(guān)鍵字來(lái)查找加密位置。
  
  找到調用函數的位置,打個(gè)斷點(diǎn),然后登錄
  
  經(jīng)過(guò)js代碼流程調試和分析,我們終于找到了加密的位置
  
  簡(jiǎn)單介紹如何調試js代碼
  
  找到sp,nonce的位置,通過(guò)python代碼實(shí)現其加密方法
  
  sp是通過(guò)rsa加密和加密生成的。rsa的具體用法可以通過(guò)百度查到?;蛘咄ㄟ^(guò)sha1加密生成。至于他是怎么得到me.rsaPubkey的,他只是在我們點(diǎn)擊登錄之前發(fā)送了一個(gè)請求,該請求的響應數據中收錄
了它。如果你測試更多次,你會(huì )發(fā)現這個(gè)值是固定的。所以我們也可以直接使用它而無(wú)需請求訪(fǎng)問(wèn)。
  nonce:在沒(méi)有點(diǎn)擊登錄之前,它也出現在請求的響應數據中。但是,我們多次點(diǎn)擊登錄,都沒(méi)有找到這個(gè)請求。nonce 的值每次都不同。所以必須是本地js文件的某個(gè)函數生成的,不需要請求服務(wù)器去獲取。我們在這里找到了 nonce 生成函數
  
  
  import random
import rsa
import hashlib
from binascii import b2a_hex
def get_nonce(n):
result = ""
random_str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
for i in range(n):
index = random.randint(0, len(random_str) - 1)
result += random_str[index]
return result
def get_sp_rsa(password, servertime, nonce):
key = "EB2A38568661887FA180BDDB5CABD5F21C7BFD59C090CB2D245A87AC253062882729293E5506350508E7F9AA3BB77F4333231490F915F6D63C55FE2F08A49B353F444AD3993CACC02DB784ABBB8E42A9B1BBFFFB38BE18D78E87A0E41B9B8F73A928EE0CCEE1F6739884B9777E4FE9E88A1BBE495927AC4A799B3181D6442443"
pubkey = rsa.PublicKey(int(key, 16), int("10001", 16))
res = rsa.encrypt(bytes("" + "\t".join([servertime, nonce]) + "\n" + password,encoding="utf-8"), pubkey)
return b2a_hex(res)
def get_sp_sha1(password, servertime, nonce):
res = hashlib.sha1(bytes("" + hashlib.sha1(bytes(hashlib.sha1(bytes(password, encoding="utf-8")).hexdigest(),encoding="utf-8")).hexdigest() + servertime + nonce,encoding="utf-8")).hexdigest()
return res
  三、響應數據
  請求參數分析基本完成,這次輸入正確的用戶(hù)名和密碼。響應數據是什么?
  
  打開(kāi)fiddler,然后退出當前賬號,重新登錄。fiddler 上會(huì )有很多請求。找到需要的請求,查看響應內容
  
  
  
  這樣做時(shí),每個(gè)響應都將設置 cookie。所以按照上面的流程,識別登錄的cookie肯定是可用的。之后,就拿著(zhù)這個(gè)cookie做其他的操作吧。
  最后附上代碼
  import requests, random, time, rsa, hashlib, base64, re, json
from binascii import b2a_hex
class WeiBo:
def __init__(self):
self.session = requests.Session()
self.headers = {
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36"
}
def login(self, account, password):
api = "https://login.sina.com.cn/sso/ ... in.js(v1.4.19)"
nonce = self._get_nonce()
servertime = self._get_now_time()
sp = self._get_sp_rsa(password, servertime, nonce)
su = self._get_su(account)
data = {
"entry": "weibo",
"gateway": "1",
"from": "",
"savestate": "7",
"qrcode_flag": "false",
"useticket": "1",
"pagerefer": "https://login.sina.com.cn/cros ... ot%3B,
"vsnf": "1",
"su": su,
"service": "miniblog",
"servertime": servertime,
"nonce": nonce,
"pwencode": "rsa2",
"rsakv": "1330428213",
"sp": sp,
"sr": "1920*1080",
"encoding": "UTF - 8",
"prelt": "149",
"url": "https://weibo.com/ajaxlogin.ph ... ot%3B,
"returntype": "META",
}
headers = self.headers.copy()
headers.update({
"Host": "login.sina.com.cn",
"Origin": "https://weibo.com",
"Referer": "https://weibo.com/"
})
response = self.session.post(api, headers=headers, data=data, allow_redirects=False)
search_result = self._re_search("location.replace\(\"(.*?)\"", response.text)
redirct_url = search_result and search_result.group(1)
if not redirct_url:
raise Exception("重定向url獲取失敗")
response = self.session.get(redirct_url, headers=headers.update({
"Referer": "https://login.sina.com.cn/sso/ ... in.js(v1.4.19)"
}), allow_redirects=False)
search_result = self._re_search('"arrURL":(.*?)}', response.text)
redirct_urls = search_result and search_result.group(1)
if not redirct_urls:
raise Exception("重定向url獲取失敗")
redirct_url_list = json.loads(redirct_urls)
userId = ""
for url in redirct_url_list:
response = self.session.get(url, headers=self.headers)
if url.startswith("https://passport.weibo.com/wbsso/login";):
userId = self._re_search('"uniqueid":"(.*?)"', response.text).group(1)
if not userId:
raise Exception("userId獲取失敗")
user_details_url = "https://weibo.com/u/{}/home?wvr=5&lf=reg".format(userId)
response = self.session.get(user_details_url, headers={
"Referer": "https://weibo.com/",
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36"
})
if self._re_search(userId, response.text):
print("登錄成功")
print(self.session.cookies)
else:
print("登錄失敗")
def _get_nonce(self):
nonce = ""
random_str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
for i in range(5):
index = random.randint(0, len(random_str) - 1)
nonce += random_str[index]
return nonce
def _get_now_time(self):
return str(int(time.time()))
def _get_sp_rsa(self, password, servertime, nonce):
key = "EB2A38568661887FA180BDDB5CABD5F21C7BFD59C090CB2D245A87AC253062882729293E5506350508E7F9AA3BB77F4333231490F915F6D63C55FE2F08A49B353F444AD3993CACC02DB784ABBB8E42A9B1BBFFFB38BE18D78E87A0E41B9B8F73A928EE0CCEE1F6739884B9777E4FE9E88A1BBE495927AC4A799B3181D6442443"
pubkey = rsa.PublicKey(int(key, 16), int("10001", 16))
res = rsa.encrypt(bytes("" + "\t".join([servertime, nonce]) + "\n" + password, encoding="utf-8"), pubkey)
return b2a_hex(res)
def _get_sp_sha1(self, password, servertime, nonce):
res = hashlib.sha1(bytes("" + hashlib.sha1(bytes(hashlib.sha1(bytes(password, encoding="utf-8")).hexdigest(),
encoding="utf-8")).hexdigest() + servertime + nonce,
encoding="utf-8")).hexdigest()
return res
def _get_su(self, account):
return str(base64.b64encode(bytes(account, encoding="utf-8")), encoding="utf-8")
def _re_search(self, pattern, html):
return re.search(pattern, html, re.S)
def test(self):
self.login("18716758777", "123456")
if __name__ == '__main__':
wb = WeiBo()
wb.test()

使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站( 如何自動(dòng)將的Twitter信息同步到國內的新浪微博(圖))

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 95 次瀏覽 ? 2021-12-25 13:28 ? 來(lái)自相關(guān)話(huà)題

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(
如何自動(dòng)將的Twitter信息同步到國內的新浪微博(圖))
  
  如何將推特信息自動(dòng)同步到新浪微博、開(kāi)心網(wǎng)、人人網(wǎng)等國內SNS網(wǎng)站。有大約一小時(shí)的時(shí)差。這個(gè)時(shí)差是由 TwitterFeed 引起的。同時(shí),這種方法的設置比較繁瑣,需要多次翻墻。
  于是,我開(kāi)始嘗試一種新的同步方式,開(kāi)發(fā)了一個(gè)Python程序,可以定時(shí)自動(dòng)讀取和同步推特信息,簡(jiǎn)化同步過(guò)程,縮短同步時(shí)間,實(shí)現基本的實(shí)時(shí)同步功能。原同步流程圖為:推特-&gt;appspot-&gt;twitterfeed-&gt;ping.fm-&gt;customurl-&gt;火兔-&gt;新浪微博,新的同步流程變?yōu)椋簍witter-&gt;appspot-&gt;火兔-&gt;新浪微博,步驟大大簡(jiǎn)化了,只需在GAE上設置一個(gè)定時(shí)執行的定時(shí)任務(wù)即可。
  因為 GAE 支持 Cron Job 調度任務(wù),所以我們的 Python 程序可以每分鐘自動(dòng)調用一次。打電話(huà)時(shí),首先從推特上抓取用戶(hù)的最新消息。抓取成功后,消息會(huì )同步到聽(tīng)火。然后分發(fā)到新浪微博、開(kāi)心網(wǎng)等,如果設置為每分鐘執行一次,同步時(shí)差只有一分鐘左右,基本實(shí)現了Twitter信息實(shí)時(shí)同步到SNS等網(wǎng)站的功能新浪微博。
  我在GAE上調試了程序Python程序,不流暢。我按照官方說(shuō)明配置了cron.yaml文件,但是更新了Twitter.py后,cron作業(yè)計劃任務(wù)還是不行,后臺也看不到相關(guān)的cron。工作任務(wù)。
  經(jīng)過(guò)一番研究,終于解決了GAE中Python的Cron Job定時(shí)任務(wù)的問(wèn)題。原因很簡(jiǎn)單,因為我的“Google App Engine SDK for Python”是很久以前安裝的,當時(shí)GAE還不支持定時(shí)任務(wù)。無(wú)法更新 cron.yaml 文件。重新下載最新版本的“Google App Engine SDK for Python”并安裝后,Cron Job定時(shí)任務(wù)更新成功。
  然而,新的問(wèn)題又來(lái)了。我發(fā)現當應用程序調用Twitter API 時(shí),失敗率非常高。在幾乎一半的情況下,它會(huì )提示“超出速率限制??蛻?hù)端每小時(shí)不能發(fā)出超過(guò) 150 個(gè)請求”。?!?這讓我懷疑是不是GAE的外部IP很小,有很多第三方程序在GAE上調用Twitter API,導致每小時(shí)調用超過(guò)150次。不然我自己的調用肯定不會(huì )有這么高的頻率,可能是因為推特沒(méi)有把GAE的IP設置為白名單。如果有一天推特不限制GAE的IP,應該沒(méi)有問(wèn)題。
  安裝說(shuō)明:
  下載,用TortoiseSVN查看SVN地址,然后編輯app.yaml,改成你的appspot應用名,然后修改twitter.py文件最后一行改你的推特用戶(hù)名,嘟嘟火兔用戶(hù)名和密碼分別填寫(xiě)。cron.yaml文件中收錄
了定時(shí)任務(wù)設置,然后就可以按照本文的方法發(fā)布,執行appcfg.py更新目錄名,使用Gmail賬號和密碼發(fā)布即可。
  發(fā)布后,GAE 可以定期執行 twitter.py 程序。由于定時(shí)執行最小可以設置為1分鐘,所以同步速度非???,基本可以達到實(shí)時(shí)自動(dòng)同步的效果。
  
  () () 查看全部

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(
如何自動(dòng)將的Twitter信息同步到國內的新浪微博(圖))
  
  如何將推特信息自動(dòng)同步到新浪微博、開(kāi)心網(wǎng)、人人網(wǎng)等國內SNS網(wǎng)站。有大約一小時(shí)的時(shí)差。這個(gè)時(shí)差是由 TwitterFeed 引起的。同時(shí),這種方法的設置比較繁瑣,需要多次翻墻。
  于是,我開(kāi)始嘗試一種新的同步方式,開(kāi)發(fā)了一個(gè)Python程序,可以定時(shí)自動(dòng)讀取和同步推特信息,簡(jiǎn)化同步過(guò)程,縮短同步時(shí)間,實(shí)現基本的實(shí)時(shí)同步功能。原同步流程圖為:推特-&gt;appspot-&gt;twitterfeed-&gt;ping.fm-&gt;customurl-&gt;火兔-&gt;新浪微博,新的同步流程變?yōu)椋簍witter-&gt;appspot-&gt;火兔-&gt;新浪微博,步驟大大簡(jiǎn)化了,只需在GAE上設置一個(gè)定時(shí)執行的定時(shí)任務(wù)即可。
  因為 GAE 支持 Cron Job 調度任務(wù),所以我們的 Python 程序可以每分鐘自動(dòng)調用一次。打電話(huà)時(shí),首先從推特上抓取用戶(hù)的最新消息。抓取成功后,消息會(huì )同步到聽(tīng)火。然后分發(fā)到新浪微博、開(kāi)心網(wǎng)等,如果設置為每分鐘執行一次,同步時(shí)差只有一分鐘左右,基本實(shí)現了Twitter信息實(shí)時(shí)同步到SNS等網(wǎng)站的功能新浪微博。
  我在GAE上調試了程序Python程序,不流暢。我按照官方說(shuō)明配置了cron.yaml文件,但是更新了Twitter.py后,cron作業(yè)計劃任務(wù)還是不行,后臺也看不到相關(guān)的cron。工作任務(wù)。
  經(jīng)過(guò)一番研究,終于解決了GAE中Python的Cron Job定時(shí)任務(wù)的問(wèn)題。原因很簡(jiǎn)單,因為我的“Google App Engine SDK for Python”是很久以前安裝的,當時(shí)GAE還不支持定時(shí)任務(wù)。無(wú)法更新 cron.yaml 文件。重新下載最新版本的“Google App Engine SDK for Python”并安裝后,Cron Job定時(shí)任務(wù)更新成功。
  然而,新的問(wèn)題又來(lái)了。我發(fā)現當應用程序調用Twitter API 時(shí),失敗率非常高。在幾乎一半的情況下,它會(huì )提示“超出速率限制??蛻?hù)端每小時(shí)不能發(fā)出超過(guò) 150 個(gè)請求”。?!?這讓我懷疑是不是GAE的外部IP很小,有很多第三方程序在GAE上調用Twitter API,導致每小時(shí)調用超過(guò)150次。不然我自己的調用肯定不會(huì )有這么高的頻率,可能是因為推特沒(méi)有把GAE的IP設置為白名單。如果有一天推特不限制GAE的IP,應該沒(méi)有問(wèn)題。
  安裝說(shuō)明:
  下載,用TortoiseSVN查看SVN地址,然后編輯app.yaml,改成你的appspot應用名,然后修改twitter.py文件最后一行改你的推特用戶(hù)名,嘟嘟火兔用戶(hù)名和密碼分別填寫(xiě)。cron.yaml文件中收錄
了定時(shí)任務(wù)設置,然后就可以按照本文的方法發(fā)布,執行appcfg.py更新目錄名,使用Gmail賬號和密碼發(fā)布即可。
  發(fā)布后,GAE 可以定期執行 twitter.py 程序。由于定時(shí)執行最小可以設置為1分鐘,所以同步速度非???,基本可以達到實(shí)時(shí)自動(dòng)同步的效果。
  
  () ()

使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(寫(xiě)個(gè)一條怎么火起來(lái)?一條B/S架構分析)

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 43 次瀏覽 ? 2021-12-25 04:07 ? 來(lái)自相關(guān)話(huà)題

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(寫(xiě)個(gè)一條怎么火起來(lái)?一條B/S架構分析)
  還在想著(zhù)寫(xiě)個(gè)例子來(lái)實(shí)際使用新浪的api。結果,實(shí)驗室的考勤機著(zhù)火了。8日下午盯著(zhù)微博,看到那條微博的轉發(fā)量從一開(kāi)始是一點(diǎn)點(diǎn)增長(cháng),然后是后面快速增長(cháng)。所以我想寫(xiě)點(diǎn)什么來(lái)分析微博是如何流行起來(lái)的。
  因為擅長(cháng)寫(xiě)B/S項目,所以先確定這個(gè)分析工具是B/S結構,然后考慮應該提供什么功能。
  首先想到的是粉絲的增長(cháng)。折線(xiàn)圖可用于顯示顯示。橫軸是時(shí)間,縱軸是風(fēng)扇數量。但是我去新浪找了一個(gè)可以實(shí)現這個(gè)功能的api。新浪提供的最新api是friends/followers(獲取用戶(hù)的粉絲列表),但是返回值不包括成為粉絲的時(shí)間。我現在能想象的數據庫表的設計大概就是一個(gè)用戶(hù)的表,然后這個(gè)表里面有一列follower,里面的值就是用戶(hù)的id。在這種情況下,真的沒(méi)有地方可以存放成為粉絲的時(shí)間。(我不知道實(shí)際情況是否如此)。因此,此功能暫時(shí)不可用。
  想到的第二件事是粉絲的分布。條形圖可用于顯示。橫軸為省,縱軸為風(fēng)扇數。新浪提供的api(friendships/followers:獲取用戶(hù)的粉絲列表)可以獲取粉絲所在的省份(.getProvince(),返回一個(gè)數字),然后根據api(common/get省份:獲取列表?。?,就可以得到號碼對應的省的名稱(chēng),所以在前臺得到你要找的微博的名稱(chēng),然后用ext來(lái)繪制地圖。效果如下:
  
 ?。ㄉ蠄D中統計時(shí)間為2012-3-12 9:20 PM,總粉絲數4770)
  開(kāi)發(fā)筆記:
  1. 認證相關(guān):使用OAuth認證。有一個(gè)登錄頁(yè)面 login.jsp 和一個(gè)回調頁(yè)面 index.jsp。在login.jsp中打開(kāi)新浪的認證頁(yè)面,認證成功后跳轉到回調頁(yè)面索引。jsp(需要同時(shí)在應用應用場(chǎng)所和項目中配置回調頁(yè)面,見(jiàn)上一篇博文)。這時(shí)候index.jsp的地址欄中有一個(gè)code值(下一步使用),使用request.getParameter("code")獲取這個(gè)值,然后執行oauth.getAccessTokenByCode(code).getAccessToken () 獲取最重要的accessToken。有了這個(gè)值,認證就被認為是成功的。這個(gè)值基本用于后續調用api,所以存儲在session中(session.setAttribute("accessToken", 訪(fǎng)問(wèn)令牌))。至此,認證成功。但是有一個(gè)問(wèn)題,刷新index.jsp的時(shí)候,會(huì )報錯“error:invalid_grant error_code:21325/oauth2/access_token”,所以改一下,開(kāi)頭先判斷session.getAttribute("accessToken")是否可用index.jsp 的值,如果沒(méi)有認證,如果沒(méi)有操作。這個(gè)改動(dòng)后報錯,報錯是空指針。原來(lái),當用戶(hù)第一次登錄時(shí),會(huì )話(huà)中沒(méi)有accessToken。解決的辦法是加一句session.setAttribute(" to login.jsp.accessToken","")。錯誤是一個(gè)空指針。原來(lái),當用戶(hù)第一次登錄時(shí),會(huì )話(huà)中沒(méi)有accessToken。解決的辦法是加一句session.setAttribute(" to login.jsp.accessToken","")。錯誤是一個(gè)空指針。原來(lái),當用戶(hù)第一次登錄時(shí),會(huì )話(huà)中沒(méi)有accessToken。解決的辦法是加一句session.setAttribute(" to login.jsp.accessToken","")。
  2.friendships/followers 的參數是screen_name(用戶(hù)昵稱(chēng))、count(單頁(yè)返回的記錄條數,默認50條,最大20條0)、cursor(那個(gè)返回結果,默認為0),表示一次只能返回200條記錄,所以需要執行多次,每次執行后可以得到此時(shí)光標的位置根據users.getNextCursor(),得到這個(gè)值,然后作為下一次執行的參數cursor的值,我用的是do-while方法,循環(huán)的條件是users.getNextCursor( ) 不為 0(因為當最后一次執行完成時(shí),users.getNextCursor()=0)。
  3. 如何存儲一個(gè)省的人數:用一個(gè)大小為100的數組a來(lái)存儲一個(gè)省的人數,初始值為0,省代碼為數組編號(例如,北京的省代碼是11,粉絲的省是11點(diǎn),a[11]++)。
  4. 按人數從大到小排序:設置兩個(gè)參數(int big=0 和 int p=-1) 遍歷數組一次,最大的用來(lái)存儲最大值找到了,p用來(lái)存放對應的省份代碼,使用do-while循環(huán),循環(huán)條件p!=-1,時(shí)間復雜度為100*n(人數不為0的省份) .
  5. 省碼轉對應省的方式:common/get Province可以得到省列表,這個(gè)api的參數是country(國家碼),我一開(kāi)始用的是086,結果是都是空的。,然后再根據另一個(gè)接口common/get_country(獲取國家列表)才發(fā)現中國的代碼應該是001(呃...)。在新浪提供的例子中,我沒(méi)有找到獲取省份列表的接口,所以我模仿寫(xiě)了一個(gè),返回值是JSONArray的格式,然后使用json.getString(index)獲取索引組,然后字符串(例如:{"001011","Beijing"})處理并獲取與省號對應的省名。為了減少接口調用次數,
  存在的問(wèn)題:
  1. 更改用戶(hù)昵稱(chēng)點(diǎn)擊查詢(xún),然后在原圖下方生成一張圖片。最好讓原圖消失,然后在這個(gè)位置重新生成新圖。這個(gè)應該是前臺代碼有問(wèn)題。ext應該比較熟悉和熟悉。
  2.friendships/followers 最多返回5000條記錄,所以如果follower超過(guò)5000,只能分析最近5000follower的分布。(馬上就要破五千了啊啊?。?br />   3. 粉絲總數應顯示在圖片或網(wǎng)頁(yè)上
  4.現在速度很慢。4770粉絲號用了20多秒才放出圖片。 查看全部

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(寫(xiě)個(gè)一條怎么火起來(lái)?一條B/S架構分析)
  還在想著(zhù)寫(xiě)個(gè)例子來(lái)實(shí)際使用新浪的api。結果,實(shí)驗室的考勤機著(zhù)火了。8日下午盯著(zhù)微博,看到那條微博的轉發(fā)量從一開(kāi)始是一點(diǎn)點(diǎn)增長(cháng),然后是后面快速增長(cháng)。所以我想寫(xiě)點(diǎn)什么來(lái)分析微博是如何流行起來(lái)的。
  因為擅長(cháng)寫(xiě)B/S項目,所以先確定這個(gè)分析工具是B/S結構,然后考慮應該提供什么功能。
  首先想到的是粉絲的增長(cháng)。折線(xiàn)圖可用于顯示顯示。橫軸是時(shí)間,縱軸是風(fēng)扇數量。但是我去新浪找了一個(gè)可以實(shí)現這個(gè)功能的api。新浪提供的最新api是friends/followers(獲取用戶(hù)的粉絲列表),但是返回值不包括成為粉絲的時(shí)間。我現在能想象的數據庫表的設計大概就是一個(gè)用戶(hù)的表,然后這個(gè)表里面有一列follower,里面的值就是用戶(hù)的id。在這種情況下,真的沒(méi)有地方可以存放成為粉絲的時(shí)間。(我不知道實(shí)際情況是否如此)。因此,此功能暫時(shí)不可用。
  想到的第二件事是粉絲的分布。條形圖可用于顯示。橫軸為省,縱軸為風(fēng)扇數。新浪提供的api(friendships/followers:獲取用戶(hù)的粉絲列表)可以獲取粉絲所在的省份(.getProvince(),返回一個(gè)數字),然后根據api(common/get省份:獲取列表?。?,就可以得到號碼對應的省的名稱(chēng),所以在前臺得到你要找的微博的名稱(chēng),然后用ext來(lái)繪制地圖。效果如下:
  
 ?。ㄉ蠄D中統計時(shí)間為2012-3-12 9:20 PM,總粉絲數4770)
  開(kāi)發(fā)筆記:
  1. 認證相關(guān):使用OAuth認證。有一個(gè)登錄頁(yè)面 login.jsp 和一個(gè)回調頁(yè)面 index.jsp。在login.jsp中打開(kāi)新浪的認證頁(yè)面,認證成功后跳轉到回調頁(yè)面索引。jsp(需要同時(shí)在應用應用場(chǎng)所和項目中配置回調頁(yè)面,見(jiàn)上一篇博文)。這時(shí)候index.jsp的地址欄中有一個(gè)code值(下一步使用),使用request.getParameter("code")獲取這個(gè)值,然后執行oauth.getAccessTokenByCode(code).getAccessToken () 獲取最重要的accessToken。有了這個(gè)值,認證就被認為是成功的。這個(gè)值基本用于后續調用api,所以存儲在session中(session.setAttribute("accessToken", 訪(fǎng)問(wèn)令牌))。至此,認證成功。但是有一個(gè)問(wèn)題,刷新index.jsp的時(shí)候,會(huì )報錯“error:invalid_grant error_code:21325/oauth2/access_token”,所以改一下,開(kāi)頭先判斷session.getAttribute("accessToken")是否可用index.jsp 的值,如果沒(méi)有認證,如果沒(méi)有操作。這個(gè)改動(dòng)后報錯,報錯是空指針。原來(lái),當用戶(hù)第一次登錄時(shí),會(huì )話(huà)中沒(méi)有accessToken。解決的辦法是加一句session.setAttribute(" to login.jsp.accessToken","")。錯誤是一個(gè)空指針。原來(lái),當用戶(hù)第一次登錄時(shí),會(huì )話(huà)中沒(méi)有accessToken。解決的辦法是加一句session.setAttribute(" to login.jsp.accessToken","")。錯誤是一個(gè)空指針。原來(lái),當用戶(hù)第一次登錄時(shí),會(huì )話(huà)中沒(méi)有accessToken。解決的辦法是加一句session.setAttribute(" to login.jsp.accessToken","")。
  2.friendships/followers 的參數是screen_name(用戶(hù)昵稱(chēng))、count(單頁(yè)返回的記錄條數,默認50條,最大20條0)、cursor(那個(gè)返回結果,默認為0),表示一次只能返回200條記錄,所以需要執行多次,每次執行后可以得到此時(shí)光標的位置根據users.getNextCursor(),得到這個(gè)值,然后作為下一次執行的參數cursor的值,我用的是do-while方法,循環(huán)的條件是users.getNextCursor( ) 不為 0(因為當最后一次執行完成時(shí),users.getNextCursor()=0)。
  3. 如何存儲一個(gè)省的人數:用一個(gè)大小為100的數組a來(lái)存儲一個(gè)省的人數,初始值為0,省代碼為數組編號(例如,北京的省代碼是11,粉絲的省是11點(diǎn),a[11]++)。
  4. 按人數從大到小排序:設置兩個(gè)參數(int big=0 和 int p=-1) 遍歷數組一次,最大的用來(lái)存儲最大值找到了,p用來(lái)存放對應的省份代碼,使用do-while循環(huán),循環(huán)條件p!=-1,時(shí)間復雜度為100*n(人數不為0的省份) .
  5. 省碼轉對應省的方式:common/get Province可以得到省列表,這個(gè)api的參數是country(國家碼),我一開(kāi)始用的是086,結果是都是空的。,然后再根據另一個(gè)接口common/get_country(獲取國家列表)才發(fā)現中國的代碼應該是001(呃...)。在新浪提供的例子中,我沒(méi)有找到獲取省份列表的接口,所以我模仿寫(xiě)了一個(gè),返回值是JSONArray的格式,然后使用json.getString(index)獲取索引組,然后字符串(例如:{"001011","Beijing"})處理并獲取與省號對應的省名。為了減少接口調用次數,
  存在的問(wèn)題:
  1. 更改用戶(hù)昵稱(chēng)點(diǎn)擊查詢(xún),然后在原圖下方生成一張圖片。最好讓原圖消失,然后在這個(gè)位置重新生成新圖。這個(gè)應該是前臺代碼有問(wèn)題。ext應該比較熟悉和熟悉。
  2.friendships/followers 最多返回5000條記錄,所以如果follower超過(guò)5000,只能分析最近5000follower的分布。(馬上就要破五千了啊啊?。?br />   3. 粉絲總數應顯示在圖片或網(wǎng)頁(yè)上
  4.現在速度很慢。4770粉絲號用了20多秒才放出圖片。

使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(新浪微博開(kāi)放平臺APIforWinRT:新浪,人人,街旁等 )

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 60 次瀏覽 ? 2021-12-23 13:24 ? 來(lái)自相關(guān)話(huà)題

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(新浪微博開(kāi)放平臺APIforWinRT:新浪,人人,街旁等
)
  【前言】
  現在各大網(wǎng)站都推出了自己的Web Api,如:新浪、騰訊、人人網(wǎng)、記邊等,這些Web API大多遵循REST架構風(fēng)格,通過(guò)json格式的數據進(jìn)行交互。
  網(wǎng)站 描述接口時(shí)也有示例json數據。我們知道在開(kāi)發(fā)靜態(tài)語(yǔ)言客戶(hù)端的時(shí)候,因為你沒(méi)有這些實(shí)體的定義,所以需要對這些代碼逐行進(jìn)行編碼。
  所以@韋恩NBA 和我(@原數據)在 網(wǎng)站 上使用這些示例 json 開(kāi)發(fā)了這個(gè)框架,以自動(dòng)生成這些定義(實(shí)體類(lèi))以簡(jiǎn)化開(kāi)發(fā)。它包括:t4、RestApiCore、
  OAuthLib、MVVMCommon。項目地址:上網(wǎng)查了一下,新浪沒(méi)有提供winRT下的SDK,所以有如下子項目。
  【新浪微博WinRT開(kāi)放平臺SDK】
  WinRT新浪微博開(kāi)放平臺API是基于新浪微博開(kāi)放平臺第二版API接口封裝的Windows 8平臺軟件開(kāi)發(fā)包(Xaml應用)。
  該SDK幫助.Net平臺開(kāi)發(fā)者在Windows 8移動(dòng)平臺上快速輕松地開(kāi)發(fā)微博相關(guān)應用。
  下載 SDK:
  【特征】
  1. 內置新浪授權頁(yè)面授權流程
  2. 異步編程框架,支持 async/await 關(guān)鍵字(無(wú)回調回調)
  3. 支持新浪微博新版API v2.0
  
  所有API的提示都和網(wǎng)站上的一樣,方便用戶(hù)快速上手。
  
  登錄示例代碼:
  public class LoginViewModel : SinaWeibo_Win8AppStore.Common.BindableBase
{
private const string AppKey = "{your key}";
private const string AppSecret = "{your secret}";
private const string Callback = "{your callbackURL}";
public async Task LoginAsync()
{
var weibo = new SinaWeiboClientV2.WeiboClientV2();
weibo.Initialize(AppKey, AppSecret, Callback);
var json = Windows.Storage.ApplicationData.Current.LocalSettings.Values["AccessToken"] as string;
if (!string.IsNullOrEmpty(json))
{
weibo.AccessToken = await JsonConvert.DeserializeObjectAsync(json);
}

if (weibo.AccessToken == null)
{
// 認證
await weibo.AuthenticateAsync();
}
// 授權
await weibo.AuthorizeAccessAsync(System.Threading.CancellationToken.None);
Windows.Storage.ApplicationData.Current.LocalSettings.Values["AccessToken"] =
await JsonConvert.SerializeObjectAsync(weibo.CurrentAuthToken.ContextData["AccessToken"]);
return weibo;
}
}
  使用 WinRT 的 WebAuthenticationBroker 進(jìn)行應用程序授權。
 ?。ㄏ螺d示例的孩子,不要忘記在你的應用中添加一個(gè)測試賬號,否則臨時(shí)應用的授權將不會(huì )通過(guò))
  
  發(fā)微博示例代碼:
  var request = new SinaWeiboClientV2.StatusesUpdate.Request { Status = this.InputArea.Text };
var response = await Weibo.ExecuteStatusesUpdateAsync(request);
  上傳圖片的示例代碼:
  var fileInfo = new RestAPICore.FileUploadInfo();
fileInfo.LocalPath = ImageFile.Name;
fileInfo.StreamFactory = GetImageFile(ImageFile);
var request = new SinaWeiboClientV2.StatusesUpload.Request
{
Status = this.InputArea.Text,
Pic = fileInfo
};
var response = await Weibo.ExecuteStatusesUploadAsync(request);
  private?async?Task?GetImageFile(StorageFile?file)
{
????var?s?=?await?file.OpenAsync(FileAccessMode.Read);
????return?s.AsStream();
}
  閱讀以下最新微博的示例代碼:
   var response = await Weibo.ExecuteStatusesFriendsTimelineAsync(request);
if (string.IsNullOrEmpty(_maxId))
{
foreach (var item in response.Value.Statuses)
{
_statusFriendsTimeline.Add(item);
}
}
  附上,如何設置測試賬號:
   查看全部

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(新浪微博開(kāi)放平臺APIforWinRT:新浪,人人,街旁等
)
  【前言】
  現在各大網(wǎng)站都推出了自己的Web Api,如:新浪、騰訊、人人網(wǎng)、記邊等,這些Web API大多遵循REST架構風(fēng)格,通過(guò)json格式的數據進(jìn)行交互。
  網(wǎng)站 描述接口時(shí)也有示例json數據。我們知道在開(kāi)發(fā)靜態(tài)語(yǔ)言客戶(hù)端的時(shí)候,因為你沒(méi)有這些實(shí)體的定義,所以需要對這些代碼逐行進(jìn)行編碼。
  所以@韋恩NBA 和我(@原數據)在 網(wǎng)站 上使用這些示例 json 開(kāi)發(fā)了這個(gè)框架,以自動(dòng)生成這些定義(實(shí)體類(lèi))以簡(jiǎn)化開(kāi)發(fā)。它包括:t4、RestApiCore、
  OAuthLib、MVVMCommon。項目地址:上網(wǎng)查了一下,新浪沒(méi)有提供winRT下的SDK,所以有如下子項目。
  【新浪微博WinRT開(kāi)放平臺SDK】
  WinRT新浪微博開(kāi)放平臺API是基于新浪微博開(kāi)放平臺第二版API接口封裝的Windows 8平臺軟件開(kāi)發(fā)包(Xaml應用)。
  該SDK幫助.Net平臺開(kāi)發(fā)者在Windows 8移動(dòng)平臺上快速輕松地開(kāi)發(fā)微博相關(guān)應用。
  下載 SDK:
  【特征】
  1. 內置新浪授權頁(yè)面授權流程
  2. 異步編程框架,支持 async/await 關(guān)鍵字(無(wú)回調回調)
  3. 支持新浪微博新版API v2.0
  
  所有API的提示都和網(wǎng)站上的一樣,方便用戶(hù)快速上手。
  
  登錄示例代碼:
  public class LoginViewModel : SinaWeibo_Win8AppStore.Common.BindableBase
{
private const string AppKey = "{your key}";
private const string AppSecret = "{your secret}";
private const string Callback = "{your callbackURL}";
public async Task LoginAsync()
{
var weibo = new SinaWeiboClientV2.WeiboClientV2();
weibo.Initialize(AppKey, AppSecret, Callback);
var json = Windows.Storage.ApplicationData.Current.LocalSettings.Values["AccessToken"] as string;
if (!string.IsNullOrEmpty(json))
{
weibo.AccessToken = await JsonConvert.DeserializeObjectAsync(json);
}

if (weibo.AccessToken == null)
{
// 認證
await weibo.AuthenticateAsync();
}
// 授權
await weibo.AuthorizeAccessAsync(System.Threading.CancellationToken.None);
Windows.Storage.ApplicationData.Current.LocalSettings.Values["AccessToken"] =
await JsonConvert.SerializeObjectAsync(weibo.CurrentAuthToken.ContextData["AccessToken"]);
return weibo;
}
}
  使用 WinRT 的 WebAuthenticationBroker 進(jìn)行應用程序授權。
 ?。ㄏ螺d示例的孩子,不要忘記在你的應用中添加一個(gè)測試賬號,否則臨時(shí)應用的授權將不會(huì )通過(guò))
  
  發(fā)微博示例代碼:
  var request = new SinaWeiboClientV2.StatusesUpdate.Request { Status = this.InputArea.Text };
var response = await Weibo.ExecuteStatusesUpdateAsync(request);
  上傳圖片的示例代碼:
  var fileInfo = new RestAPICore.FileUploadInfo();
fileInfo.LocalPath = ImageFile.Name;
fileInfo.StreamFactory = GetImageFile(ImageFile);
var request = new SinaWeiboClientV2.StatusesUpload.Request
{
Status = this.InputArea.Text,
Pic = fileInfo
};
var response = await Weibo.ExecuteStatusesUploadAsync(request);
  private?async?Task?GetImageFile(StorageFile?file)
{
????var?s?=?await?file.OpenAsync(FileAccessMode.Read);
????return?s.AsStream();
}
  閱讀以下最新微博的示例代碼:
   var response = await Weibo.ExecuteStatusesFriendsTimelineAsync(request);
if (string.IsNullOrEmpty(_maxId))
{
foreach (var item in response.Value.Statuses)
{
_statusFriendsTimeline.Add(item);
}
}
  附上,如何設置測試賬號:
  

使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(一個(gè)自動(dòng)發(fā)布新浪微博的機器人(圖)分享(組圖))

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 76 次瀏覽 ? 2021-12-21 21:07 ? 來(lái)自相關(guān)話(huà)題

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(一個(gè)自動(dòng)發(fā)布新浪微博的機器人(圖)分享(組圖))
  最近在研究使用Python制作各種類(lèi)型的機器人。今天給大家分享一個(gè)自動(dòng)發(fā)布新浪微博的機器人。
  基本思想
  其實(shí)實(shí)現一個(gè)簡(jiǎn)單的自動(dòng)發(fā)布微博的微博機器人并不難。你只需要每天準時(shí)找到要發(fā)布的素材(一般是爬蟲(chóng)),然后通過(guò)微博開(kāi)放的API接口自動(dòng)發(fā)布。
  材料
  材料方面,我選擇了金山詞霸的每日一句。我們可以抓取這個(gè)網(wǎng)站的相關(guān)信息來(lái)組成我們的微博素材。
  微博接口
  微博為開(kāi)發(fā)者提供開(kāi)放平臺
  當然,在使用這個(gè)平臺之前,我們仍然需要注冊并創(chuàng )建一個(gè)應用程序。比如像我一樣,創(chuàng )建一個(gè)應用程序
  
  然后我們還需要設置一個(gè)安全域名(以后發(fā)布微博時(shí)會(huì )用到),在應用信息-&gt;基本信息中設置。
  
  還需要設置應用回調地址,在應用信息-&gt;高級信息中設置。
  
  當然,對于微博API的調用,我們可以使用別人打包的第三方庫,操作起來(lái)更方便。這里我使用了一個(gè)名為“weibo”的庫,直接使用pip安裝。
  pip 安裝微博
  但是我遇到了一個(gè)安裝問(wèn)題,錯誤如下
  Traceback (most recent call last):
File "setup.py", line 15, in
long_description=open('README.rst').read(),
UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 241: illegal multibyte sequence
  好像是編碼問(wèn)題,我們可以通過(guò)修改源代碼來(lái)規避
  
  long_description=open('README.rst', encoding='utf-8').read(),
  python setup.py build
python setup.py install
  至此就可以成功安裝微博庫了
  準備工作和寫(xiě)作思路就是這些,下面我們來(lái)看看具體的過(guò)程和代碼
  Python自動(dòng)發(fā)布微博
  根據微博庫的文檔,操作微博還是比較好用的。您只需要在我們創(chuàng )建微博應用時(shí)提供App Key和App Secret以及應用回調地址信息即可。簡(jiǎn)單的調用代碼如下
  from weibo import Client
c = Client('App Key', 'App Secret', 'https://www.luobodazahui.top', username='username', password='password')
c.post('statuses/share', status='haha' + 安全域名)
  我們運行代碼,如果沒(méi)有任何反應,我們將可以在該帳戶(hù)下的微博中看到剛剛發(fā)布的微博。
  
  最簡(jiǎn)單的微博已經(jīng)發(fā)布成功了,那么我們可以發(fā)布帶圖片的微博,我們試試吧
  根據接口status/share的文檔,我們可以傳入pic參數來(lái)上傳圖片
  
  我們傳入 pic 參數并嘗試
  f = open('4.png', 'rb')
c.post('statuses/share', status='haha' + 安全域名, pic=f)
f.close()
  是的,它可以正常發(fā)布帶圖片的微博
  
  那么現在微博的自動(dòng)發(fā)布就完成了,下面我們來(lái)看看如何自動(dòng)獲取微博素材
  微博素材
  對于金山詞霸的每日一句,我們可以使用以下API獲取每日信息
  可以看到界面返回如下信息
  
  我們可以直接使用requests庫來(lái)調用這個(gè)接口
  import requests
url = 'http://open.iciba.com/dsapi/'
res = requests.get(url)
content_e = res.json()['content']
content_c = res.json()['note']
content = content_e + 'n' + content_c
content_t = res.json()['picture2']
  現在我們封裝兩個(gè)函數來(lái)完成功能
  def weibo(content, picture):
ff = requests.get(picture).content
c = Client(app_key, app_secret, 'https://www.luobodazahui.top', username=username, password=password)
c.post('statuses/share', status=content + 'https://www.luobodazahui.com', pic=ff)
def auto_weibo():
url = 'http://open.iciba.com/dsapi/'
res = requests.get(url)
content_e = res.json()['content']
content_c = res.json()['note']
content = content_e + 'n' + content_c
content_t = res.json()['picture2']
weibo(content, content_t)
return 'OK'
  現在我們可以創(chuàng )建一個(gè)定時(shí)任務(wù),每天7點(diǎn)運行腳本。
  0 7 * * * python auto_weibo.py
  最終效果如下
  
  免責聲明:本文來(lái)自匯火官方原創(chuàng ),如轉載請注明出處: 查看全部

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(一個(gè)自動(dòng)發(fā)布新浪微博的機器人(圖)分享(組圖))
  最近在研究使用Python制作各種類(lèi)型的機器人。今天給大家分享一個(gè)自動(dòng)發(fā)布新浪微博的機器人。
  基本思想
  其實(shí)實(shí)現一個(gè)簡(jiǎn)單的自動(dòng)發(fā)布微博的微博機器人并不難。你只需要每天準時(shí)找到要發(fā)布的素材(一般是爬蟲(chóng)),然后通過(guò)微博開(kāi)放的API接口自動(dòng)發(fā)布。
  材料
  材料方面,我選擇了金山詞霸的每日一句。我們可以抓取這個(gè)網(wǎng)站的相關(guān)信息來(lái)組成我們的微博素材。
  微博接口
  微博為開(kāi)發(fā)者提供開(kāi)放平臺
  當然,在使用這個(gè)平臺之前,我們仍然需要注冊并創(chuàng )建一個(gè)應用程序。比如像我一樣,創(chuàng )建一個(gè)應用程序
  
  然后我們還需要設置一個(gè)安全域名(以后發(fā)布微博時(shí)會(huì )用到),在應用信息-&gt;基本信息中設置。
  
  還需要設置應用回調地址,在應用信息-&gt;高級信息中設置。
  
  當然,對于微博API的調用,我們可以使用別人打包的第三方庫,操作起來(lái)更方便。這里我使用了一個(gè)名為“weibo”的庫,直接使用pip安裝。
  pip 安裝微博
  但是我遇到了一個(gè)安裝問(wèn)題,錯誤如下
  Traceback (most recent call last):
File "setup.py", line 15, in
long_description=open('README.rst').read(),
UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 241: illegal multibyte sequence
  好像是編碼問(wèn)題,我們可以通過(guò)修改源代碼來(lái)規避
  
  long_description=open('README.rst', encoding='utf-8').read(),
  python setup.py build
python setup.py install
  至此就可以成功安裝微博庫了
  準備工作和寫(xiě)作思路就是這些,下面我們來(lái)看看具體的過(guò)程和代碼
  Python自動(dòng)發(fā)布微博
  根據微博庫的文檔,操作微博還是比較好用的。您只需要在我們創(chuàng )建微博應用時(shí)提供App Key和App Secret以及應用回調地址信息即可。簡(jiǎn)單的調用代碼如下
  from weibo import Client
c = Client('App Key', 'App Secret', 'https://www.luobodazahui.top', username='username', password='password')
c.post('statuses/share', status='haha' + 安全域名)
  我們運行代碼,如果沒(méi)有任何反應,我們將可以在該帳戶(hù)下的微博中看到剛剛發(fā)布的微博。
  
  最簡(jiǎn)單的微博已經(jīng)發(fā)布成功了,那么我們可以發(fā)布帶圖片的微博,我們試試吧
  根據接口status/share的文檔,我們可以傳入pic參數來(lái)上傳圖片
  
  我們傳入 pic 參數并嘗試
  f = open('4.png', 'rb')
c.post('statuses/share', status='haha' + 安全域名, pic=f)
f.close()
  是的,它可以正常發(fā)布帶圖片的微博
  
  那么現在微博的自動(dòng)發(fā)布就完成了,下面我們來(lái)看看如何自動(dòng)獲取微博素材
  微博素材
  對于金山詞霸的每日一句,我們可以使用以下API獲取每日信息
  可以看到界面返回如下信息
  
  我們可以直接使用requests庫來(lái)調用這個(gè)接口
  import requests
url = 'http://open.iciba.com/dsapi/'
res = requests.get(url)
content_e = res.json()['content']
content_c = res.json()['note']
content = content_e + 'n' + content_c
content_t = res.json()['picture2']
  現在我們封裝兩個(gè)函數來(lái)完成功能
  def weibo(content, picture):
ff = requests.get(picture).content
c = Client(app_key, app_secret, 'https://www.luobodazahui.top', username=username, password=password)
c.post('statuses/share', status=content + 'https://www.luobodazahui.com', pic=ff)
def auto_weibo():
url = 'http://open.iciba.com/dsapi/'
res = requests.get(url)
content_e = res.json()['content']
content_c = res.json()['note']
content = content_e + 'n' + content_c
content_t = res.json()['picture2']
weibo(content, content_t)
return 'OK'
  現在我們可以創(chuàng )建一個(gè)定時(shí)任務(wù),每天7點(diǎn)運行腳本。
  0 7 * * * python auto_weibo.py
  最終效果如下
  
  免責聲明:本文來(lái)自匯火官方原創(chuàng ),如轉載請注明出處:

使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(關(guān)于新浪微博爬蟲(chóng)的一些事兒,你知道嗎? )

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 57 次瀏覽 ? 2021-12-21 21:05 ? 來(lái)自相關(guān)話(huà)題

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(關(guān)于新浪微博爬蟲(chóng)的一些事兒,你知道嗎?
)
  最近和孫承杰老師在NLP實(shí)驗室做了一些事情。我打算結合新浪微博的用戶(hù)數據,基于文章的“多標簽分類(lèi)”算法,看看實(shí)驗的效果。于是找了一些關(guān)于新浪微博爬蟲(chóng)的資料,整理如下:
  (一)模擬登錄新浪微博(Python)(使用python程序獲取cookie登錄)
  更新:如果只是寫(xiě)個(gè)小爬蟲(chóng),訪(fǎng)問(wèn)需要登錄的頁(yè)面,使用填cookies的方法,簡(jiǎn)單粗暴有效。有關(guān)詳細信息,請參閱:
  模擬登錄有時(shí)需要了解js加密(散列)方法、輸入驗證方法等,同一段代碼很難一直有效。
  文本:
  PC登錄新浪微博時(shí),用戶(hù)名和密碼在客戶(hù)端用js進(jìn)行了預加密,POST前會(huì )GET一組參數,也是POST_DATA的一部分。這樣就不能用通常的簡(jiǎn)單方法來(lái)模擬POST登錄(如人人網(wǎng))。
  由于部分要使用的微博數據不方便通過(guò)API獲取,所以還是要自己寫(xiě)一個(gè)小爬蟲(chóng),模擬登錄是必不可少的。想了想這件事,最后還是登錄成功了。
  1、在提交POST請求之前,需要GET獲取兩個(gè)參數。
  地址為:(v1.3.18)
  得到的數據中收錄了“servertime”和“nonce”的值,是隨機的,其他的值好像沒(méi)什么用。
  2、通過(guò)httpfox觀(guān)察POST數據,參數比較復雜,其中“su”為加密用戶(hù)名,“sp”為加密密碼?!皊ervertime”和“nonce”是從上一步獲得的。其他參數不變。
  username 經(jīng)過(guò)了BASE64 計算: username = base64.encodestring( urllib.quote(username) )[:-1];
password 經(jīng)過(guò)了三次SHA1 加密, 且其中加入了 servertime 和 nonce 的值來(lái)干擾。
即: 兩次SHA1加密后, 將結果加上 servertime 和 nonce 的值, 再SHA1 算一次。
將參數組織好, POST請求。 這之后還沒(méi)有登錄成功。
POST后得到的內容中包含一句 location.replace("http://weibo.com/ajaxlogin.php ... 6quot;);
  這是登錄失敗時(shí)的結果。登錄成功后的結果類(lèi)似,只是retcode的值為0,然后再次請求這個(gè)網(wǎng)址,這樣就可以成功登錄微博了。
  記得提前構建緩存。
  以下是完整代碼(不做注釋?zhuān)黄饋?lái)看看):
  #! /usr/bin/env python
#coding=utf8
import urllib
import urllib2
import cookielib
import base64
import re
import json
import hashlib
cj = cookielib.LWPCookieJar()
cookie_support = urllib2.HTTPCookieProcessor(cj)
opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler)
urllib2.install_opener(opener)
postdata = {
\'entry\': \'weibo\',
\'gateway\': \'1\',
\'from\': \'\',
\'savestate\': \'7\',
\'userticket\': \'1\',
\'ssosimplelogin\': \'1\',
\'vsnf\': \'1\',
\'vsnval\': \'\',
\'su\': \'\',
\'service\': \'miniblog\',
\'servertime\': \'\',
\'nonce\': \'\',
\'pwencode\': \'wsse\',
\'sp\': \'\',
\'encoding\': \'UTF-8\',
\'url\': \'http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack\',
\'returntype\': \'META\'
}
def get_servertime():
url = \'http://login.sina.com.cn/sso/prelogin.php?entry=weibo&callback=sinaSSOController.preloginCallBack&su=dW5kZWZpbmVk&client=ssologin.js(v1.3.18)&_=1329806375939\'
data = urllib2.urlopen(url).read()
p = re.compile(\'\((.*)\)\')
try:
json_data = p.search(data).group(1)
data = json.loads(json_data)
servertime = str(data[\'servertime\'])
nonce = data[\'nonce\']
return servertime, nonce
except:
print \'Get severtime error!\'
return None
def get_pwd(pwd, servertime, nonce):
pwd1 = hashlib.sha1(pwd).hexdigest()
pwd2 = hashlib.sha1(pwd1).hexdigest()
pwd3_ = pwd2 + servertime + nonce
pwd3 = hashlib.sha1(pwd3_).hexdigest()
return pwd3
def get_user(username):
username_ = urllib.quote(username)
username = base64.encodestring(username_)[:-1]
return username
def login():
username = \'你的登錄郵箱\'
pwd = \'你的密碼\'
url = \'http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.3.18)\'
try:
servertime, nonce = get_servertime()
except:
return
global postdata
postdata[\'servertime\'] = servertime
postdata[\'nonce\'] = nonce
postdata[\'su\'] = get_user(username)
postdata[\'sp\'] = get_pwd(pwd, servertime, nonce)
postdata = urllib.urlencode(postdata)
headers = {\'User-Agent\':\'Mozilla/5.0 (X11; Linux i686; rv:8.0) Gecko/20100101 Firefox/8.0\'}
req = urllib2.Request(
url = url,
data = postdata,
headers = headers
)
result = urllib2.urlopen(req)
text = result.read()
p = re.compile(\'location\.replace\(\\'(.*?)\\'\)\')
try:
login_url = p.search(text).group(1)
#print login_url
urllib2.urlopen(login_url)
print "登錄成功!"
except:
print \'Login error!\'
login()
  (二)模擬登錄新浪微博(直接填寫(xiě)Cookie)
  之前寫(xiě)過(guò)一個(gè)模擬登錄新浪微博,使用POST用戶(hù)名/密碼參數(加密)并保存Cookies來(lái)模擬登錄。
  一般情況下,為了保證安全,網(wǎng)站會(huì )定期更新登錄細節,比如修改參數名,更新加密(散列)算法等,所以模擬登錄的代碼肯定會(huì )周期性的失敗,但是如果網(wǎng)站 沒(méi)有進(jìn)行大的更新,稍微修改一下還是可以使用的。此外,驗證碼的處理難度更大。雖然該程序在一定程度上可以識別驗證碼字符,但目前還很難找到一個(gè)簡(jiǎn)單通用的驗證碼識別程序。
  很多豆友反映,他們需要模擬登錄新浪微博來(lái)抓取數據。事實(shí)上,對于一般的微博數據獲取,比如用戶(hù)信息、微博內容等,使用微博開(kāi)放平臺API是更明智的選擇:速度更快,并且在網(wǎng)頁(yè)處理上節省大量精力。對于沒(méi)有對API開(kāi)放的數據,我們再采用模擬登錄的方式。
  熟悉網(wǎng)絡(luò )的朋友只要定期維護模擬登錄的代碼就可以成功登錄微博。如果你不是很熟悉,其實(shí)可以用更幼稚的方法來(lái)解決:直接將Cookie發(fā)送到新浪微博,實(shí)現模擬登錄。
  1. 獲取餅干
  這很簡(jiǎn)單。您可以通過(guò)Chrome瀏覽器的“開(kāi)發(fā)者工具”或火狐瀏覽器的“HTTPFOX”等插件直接查看您的新浪微博cookies。(注意:不要泄露這個(gè)私人Cookie?。?br />   比如Chrome查看cookie(快捷鍵F12可以調出chrome開(kāi)發(fā)者工具)
  鍍鉻餅干
  鍍鉻餅干
  
  2. 提交Cookie作為訪(fǎng)問(wèn)微博的header參數
  headers = {\'cookie\': \'你的 cookie\'}
  req = urllib2.Request(url, headers=headers) #每次訪(fǎng)問(wèn)頁(yè)面時(shí),帶上headers參數
  r = urllib2.urlopen(req)
  具體代碼見(jiàn):
 ?。ㄈ┒啻赖腸ookie問(wèn)題,最后還是自己解決了...
  我不太了解HTTP中的協(xié)議和東西,但我知道有這樣的東西。是時(shí)候閱讀《HTTP 權威指南》這本書(shū)了,以免...
  同學(xué)說(shuō)可以用cookies登錄人人網(wǎng)、微博什么的,他是網(wǎng)絡(luò )安全高手,黑客類(lèi),我這方面菜鳥(niǎo),所以很想試試。
  網(wǎng)上找了很多資源,包括模擬登錄新浪微博(直接填寫(xiě)Cookie)
  我知道在哪里可以找到 cookie,就像這樣(我使用 chrome)
  
  點(diǎn)擊進(jìn)去,它看起來(lái)像這樣
  
  不,這個(gè)想法是靈活的??隙ㄊ谴蜷_(kāi)方式不對……所以,打開(kāi)F12,打開(kāi)瀏覽器控制臺,查看網(wǎng)絡(luò )頁(yè)面,像這樣:
  
  趕快去地址輸入網(wǎng)址吧??!我們會(huì )發(fā)現很多東西經(jīng)過(guò)
  
  看到了,是藍色的東西,復制粘貼,粘貼到代碼里,就好了
  
  最后,抓取ajax
  (四)使用python實(shí)現新浪微博爬蟲(chóng)
  接下來(lái)考慮爬取微博內容的實(shí)現。
  這時(shí),我遇到了困難。當我抓取指定網(wǎng)址的微博時(shí),最初只顯示了15條。后者是延遲顯示(在ajax中稱(chēng)為延遲加載?)。也就是說(shuō),當滾動(dòng)條第一次拖到底部時(shí),會(huì )顯示第二部分,然后再拖到底部,會(huì )顯示第三部分。此時(shí),一個(gè)頁(yè)面的微博就完成了。因此,要獲取一個(gè)微博頁(yè)面的所有微博,需要訪(fǎng)問(wèn)該頁(yè)面3次。創(chuàng )建getWeiboPage.py文件,對應代碼如下:
  #!/usr/bin/env python
# -*- coding: utf-8 -*-

import urllib
import urllib2
import sys
import time

reload(sys)
sys.setdefaultencoding(\'utf-8\')

class getWeiboPage:
body = {
\'__rnd\':\'\',
\'_k\':\'\',
\'_t\':\'0\',
\'count\':\'50\',
\'end_id\':\'\',
\'max_id\':\'\',
\'page\':1,
\'pagebar\':\'\',
\'pre_page\':\'0\',
\'uid\':\'\'
}
uid_list = []
charset = \'utf8\'

def get_msg(self,uid):
getWeiboPage.body[\'uid\'] = uid
url = self.get_url(uid)
self.get_firstpage(url)
self.get_secondpage(url)
self.get_thirdpage(url)
def get_firstpage(self,url):
getWeiboPage.body[\'pre_page\'] = getWeiboPage.body[\'page\']-1
url = url +urllib.urlencode(getWeiboPage.body)
req = urllib2.Request(url)
result = urllib2.urlopen(req)
text = result.read()
self.writefile(\'./output/text1\',text)
self.writefile(\'./output/result1\',eval("u\'\'\'"+text+"\'\'\'"))

def get_secondpage(self,url):
getWeiboPage.body[\'count\'] = \'15\'
# getWeiboPage.body[\'end_id\'] = \'3490160379905732\'
# getWeiboPage.body[\'max_id\'] = \'3487344294660278\'
getWeiboPage.body[\'pagebar\'] = \'0\'
getWeiboPage.body[\'pre_page\'] = getWeiboPage.body[\'page\']

url = url +urllib.urlencode(getWeiboPage.body)
req = urllib2.Request(url)
result = urllib2.urlopen(req)
text = result.read()
self.writefile(\'./output/text2\',text)
self.writefile(\'./output/result2\',eval("u\'\'\'"+text+"\'\'\'"))
def get_thirdpage(self,url):
getWeiboPage.body[\'count\'] = \'15\'
getWeiboPage.body[\'pagebar\'] = \'1\'
getWeiboPage.body[\'pre_page\'] = getWeiboPage.body[\'page\']

url = url +urllib.urlencode(getWeiboPage.body)
req = urllib2.Request(url)
result = urllib2.urlopen(req)
text = result.read()
self.writefile(\'./output/text3\',text)
self.writefile(\'./output/result3\',eval("u\'\'\'"+text+"\'\'\'"))
def get_url(self,uid):
url = \'http://weibo.com/\' + uid + \'?from=otherprofile&wvr=3.6&loc=tagweibo\'
return url
def get_uid(self,filename):
fread = file(filename)
for line in fread:
getWeiboPage.uid_list.append(line)
print line
time.sleep(1)
def writefile(self,filename,content):
fw = file(filename,\'w\')
fw.write(content)
fw.close() 查看全部

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(關(guān)于新浪微博爬蟲(chóng)的一些事兒,你知道嗎?
)
  最近和孫承杰老師在NLP實(shí)驗室做了一些事情。我打算結合新浪微博的用戶(hù)數據,基于文章的“多標簽分類(lèi)”算法,看看實(shí)驗的效果。于是找了一些關(guān)于新浪微博爬蟲(chóng)的資料,整理如下:
  (一)模擬登錄新浪微博(Python)(使用python程序獲取cookie登錄)
  更新:如果只是寫(xiě)個(gè)小爬蟲(chóng),訪(fǎng)問(wèn)需要登錄的頁(yè)面,使用填cookies的方法,簡(jiǎn)單粗暴有效。有關(guān)詳細信息,請參閱:
  模擬登錄有時(shí)需要了解js加密(散列)方法、輸入驗證方法等,同一段代碼很難一直有效。
  文本:
  PC登錄新浪微博時(shí),用戶(hù)名和密碼在客戶(hù)端用js進(jìn)行了預加密,POST前會(huì )GET一組參數,也是POST_DATA的一部分。這樣就不能用通常的簡(jiǎn)單方法來(lái)模擬POST登錄(如人人網(wǎng))。
  由于部分要使用的微博數據不方便通過(guò)API獲取,所以還是要自己寫(xiě)一個(gè)小爬蟲(chóng),模擬登錄是必不可少的。想了想這件事,最后還是登錄成功了。
  1、在提交POST請求之前,需要GET獲取兩個(gè)參數。
  地址為:(v1.3.18)
  得到的數據中收錄了“servertime”和“nonce”的值,是隨機的,其他的值好像沒(méi)什么用。
  2、通過(guò)httpfox觀(guān)察POST數據,參數比較復雜,其中“su”為加密用戶(hù)名,“sp”為加密密碼?!皊ervertime”和“nonce”是從上一步獲得的。其他參數不變。
  username 經(jīng)過(guò)了BASE64 計算: username = base64.encodestring( urllib.quote(username) )[:-1];
password 經(jīng)過(guò)了三次SHA1 加密, 且其中加入了 servertime 和 nonce 的值來(lái)干擾。
即: 兩次SHA1加密后, 將結果加上 servertime 和 nonce 的值, 再SHA1 算一次。
將參數組織好, POST請求。 這之后還沒(méi)有登錄成功。
POST后得到的內容中包含一句 location.replace("http://weibo.com/ajaxlogin.php ... 6quot;);
  這是登錄失敗時(shí)的結果。登錄成功后的結果類(lèi)似,只是retcode的值為0,然后再次請求這個(gè)網(wǎng)址,這樣就可以成功登錄微博了。
  記得提前構建緩存。
  以下是完整代碼(不做注釋?zhuān)黄饋?lái)看看):
  #! /usr/bin/env python
#coding=utf8
import urllib
import urllib2
import cookielib
import base64
import re
import json
import hashlib
cj = cookielib.LWPCookieJar()
cookie_support = urllib2.HTTPCookieProcessor(cj)
opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler)
urllib2.install_opener(opener)
postdata = {
\'entry\': \'weibo\',
\'gateway\': \'1\',
\'from\': \'\',
\'savestate\': \'7\',
\'userticket\': \'1\',
\'ssosimplelogin\': \'1\',
\'vsnf\': \'1\',
\'vsnval\': \'\',
\'su\': \'\',
\'service\': \'miniblog\',
\'servertime\': \'\',
\'nonce\': \'\',
\'pwencode\': \'wsse\',
\'sp\': \'\',
\'encoding\': \'UTF-8\',
\'url\': \'http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack\',
\'returntype\': \'META\'
}
def get_servertime():
url = \'http://login.sina.com.cn/sso/prelogin.php?entry=weibo&callback=sinaSSOController.preloginCallBack&su=dW5kZWZpbmVk&client=ssologin.js(v1.3.18)&_=1329806375939\'
data = urllib2.urlopen(url).read()
p = re.compile(\'\((.*)\)\')
try:
json_data = p.search(data).group(1)
data = json.loads(json_data)
servertime = str(data[\'servertime\'])
nonce = data[\'nonce\']
return servertime, nonce
except:
print \'Get severtime error!\'
return None
def get_pwd(pwd, servertime, nonce):
pwd1 = hashlib.sha1(pwd).hexdigest()
pwd2 = hashlib.sha1(pwd1).hexdigest()
pwd3_ = pwd2 + servertime + nonce
pwd3 = hashlib.sha1(pwd3_).hexdigest()
return pwd3
def get_user(username):
username_ = urllib.quote(username)
username = base64.encodestring(username_)[:-1]
return username
def login():
username = \'你的登錄郵箱\'
pwd = \'你的密碼\'
url = \'http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.3.18)\'
try:
servertime, nonce = get_servertime()
except:
return
global postdata
postdata[\'servertime\'] = servertime
postdata[\'nonce\'] = nonce
postdata[\'su\'] = get_user(username)
postdata[\'sp\'] = get_pwd(pwd, servertime, nonce)
postdata = urllib.urlencode(postdata)
headers = {\'User-Agent\':\'Mozilla/5.0 (X11; Linux i686; rv:8.0) Gecko/20100101 Firefox/8.0\'}
req = urllib2.Request(
url = url,
data = postdata,
headers = headers
)
result = urllib2.urlopen(req)
text = result.read()
p = re.compile(\'location\.replace\(\\'(.*?)\\'\)\')
try:
login_url = p.search(text).group(1)
#print login_url
urllib2.urlopen(login_url)
print "登錄成功!"
except:
print \'Login error!\'
login()
  (二)模擬登錄新浪微博(直接填寫(xiě)Cookie)
  之前寫(xiě)過(guò)一個(gè)模擬登錄新浪微博,使用POST用戶(hù)名/密碼參數(加密)并保存Cookies來(lái)模擬登錄。
  一般情況下,為了保證安全,網(wǎng)站會(huì )定期更新登錄細節,比如修改參數名,更新加密(散列)算法等,所以模擬登錄的代碼肯定會(huì )周期性的失敗,但是如果網(wǎng)站 沒(méi)有進(jìn)行大的更新,稍微修改一下還是可以使用的。此外,驗證碼的處理難度更大。雖然該程序在一定程度上可以識別驗證碼字符,但目前還很難找到一個(gè)簡(jiǎn)單通用的驗證碼識別程序。
  很多豆友反映,他們需要模擬登錄新浪微博來(lái)抓取數據。事實(shí)上,對于一般的微博數據獲取,比如用戶(hù)信息、微博內容等,使用微博開(kāi)放平臺API是更明智的選擇:速度更快,并且在網(wǎng)頁(yè)處理上節省大量精力。對于沒(méi)有對API開(kāi)放的數據,我們再采用模擬登錄的方式。
  熟悉網(wǎng)絡(luò )的朋友只要定期維護模擬登錄的代碼就可以成功登錄微博。如果你不是很熟悉,其實(shí)可以用更幼稚的方法來(lái)解決:直接將Cookie發(fā)送到新浪微博,實(shí)現模擬登錄。
  1. 獲取餅干
  這很簡(jiǎn)單。您可以通過(guò)Chrome瀏覽器的“開(kāi)發(fā)者工具”或火狐瀏覽器的“HTTPFOX”等插件直接查看您的新浪微博cookies。(注意:不要泄露這個(gè)私人Cookie?。?br />   比如Chrome查看cookie(快捷鍵F12可以調出chrome開(kāi)發(fā)者工具)
  鍍鉻餅干
  鍍鉻餅干
  
  2. 提交Cookie作為訪(fǎng)問(wèn)微博的header參數
  headers = {\'cookie\': \'你的 cookie\'}
  req = urllib2.Request(url, headers=headers) #每次訪(fǎng)問(wèn)頁(yè)面時(shí),帶上headers參數
  r = urllib2.urlopen(req)
  具體代碼見(jiàn):
 ?。ㄈ┒啻赖腸ookie問(wèn)題,最后還是自己解決了...
  我不太了解HTTP中的協(xié)議和東西,但我知道有這樣的東西。是時(shí)候閱讀《HTTP 權威指南》這本書(shū)了,以免...
  同學(xué)說(shuō)可以用cookies登錄人人網(wǎng)、微博什么的,他是網(wǎng)絡(luò )安全高手,黑客類(lèi),我這方面菜鳥(niǎo),所以很想試試。
  網(wǎng)上找了很多資源,包括模擬登錄新浪微博(直接填寫(xiě)Cookie)
  我知道在哪里可以找到 cookie,就像這樣(我使用 chrome)
  
  點(diǎn)擊進(jìn)去,它看起來(lái)像這樣
  
  不,這個(gè)想法是靈活的??隙ㄊ谴蜷_(kāi)方式不對……所以,打開(kāi)F12,打開(kāi)瀏覽器控制臺,查看網(wǎng)絡(luò )頁(yè)面,像這樣:
  
  趕快去地址輸入網(wǎng)址吧??!我們會(huì )發(fā)現很多東西經(jīng)過(guò)
  
  看到了,是藍色的東西,復制粘貼,粘貼到代碼里,就好了
  
  最后,抓取ajax
  (四)使用python實(shí)現新浪微博爬蟲(chóng)
  接下來(lái)考慮爬取微博內容的實(shí)現。
  這時(shí),我遇到了困難。當我抓取指定網(wǎng)址的微博時(shí),最初只顯示了15條。后者是延遲顯示(在ajax中稱(chēng)為延遲加載?)。也就是說(shuō),當滾動(dòng)條第一次拖到底部時(shí),會(huì )顯示第二部分,然后再拖到底部,會(huì )顯示第三部分。此時(shí),一個(gè)頁(yè)面的微博就完成了。因此,要獲取一個(gè)微博頁(yè)面的所有微博,需要訪(fǎng)問(wèn)該頁(yè)面3次。創(chuàng )建getWeiboPage.py文件,對應代碼如下:
  #!/usr/bin/env python
# -*- coding: utf-8 -*-

import urllib
import urllib2
import sys
import time

reload(sys)
sys.setdefaultencoding(\'utf-8\')

class getWeiboPage:
body = {
\'__rnd\':\'\',
\'_k\':\'\',
\'_t\':\'0\',
\'count\':\'50\',
\'end_id\':\'\',
\'max_id\':\'\',
\'page\':1,
\'pagebar\':\'\',
\'pre_page\':\'0\',
\'uid\':\'\'
}
uid_list = []
charset = \'utf8\'

def get_msg(self,uid):
getWeiboPage.body[\'uid\'] = uid
url = self.get_url(uid)
self.get_firstpage(url)
self.get_secondpage(url)
self.get_thirdpage(url)
def get_firstpage(self,url):
getWeiboPage.body[\'pre_page\'] = getWeiboPage.body[\'page\']-1
url = url +urllib.urlencode(getWeiboPage.body)
req = urllib2.Request(url)
result = urllib2.urlopen(req)
text = result.read()
self.writefile(\'./output/text1\',text)
self.writefile(\'./output/result1\',eval("u\'\'\'"+text+"\'\'\'"))

def get_secondpage(self,url):
getWeiboPage.body[\'count\'] = \'15\'
# getWeiboPage.body[\'end_id\'] = \'3490160379905732\'
# getWeiboPage.body[\'max_id\'] = \'3487344294660278\'
getWeiboPage.body[\'pagebar\'] = \'0\'
getWeiboPage.body[\'pre_page\'] = getWeiboPage.body[\'page\']

url = url +urllib.urlencode(getWeiboPage.body)
req = urllib2.Request(url)
result = urllib2.urlopen(req)
text = result.read()
self.writefile(\'./output/text2\',text)
self.writefile(\'./output/result2\',eval("u\'\'\'"+text+"\'\'\'"))
def get_thirdpage(self,url):
getWeiboPage.body[\'count\'] = \'15\'
getWeiboPage.body[\'pagebar\'] = \'1\'
getWeiboPage.body[\'pre_page\'] = getWeiboPage.body[\'page\']

url = url +urllib.urlencode(getWeiboPage.body)
req = urllib2.Request(url)
result = urllib2.urlopen(req)
text = result.read()
self.writefile(\'./output/text3\',text)
self.writefile(\'./output/result3\',eval("u\'\'\'"+text+"\'\'\'"))
def get_url(self,uid):
url = \'http://weibo.com/\' + uid + \'?from=otherprofile&wvr=3.6&loc=tagweibo\'
return url
def get_uid(self,filename):
fread = file(filename)
for line in fread:
getWeiboPage.uid_list.append(line)
print line
time.sleep(1)
def writefile(self,filename,content):
fw = file(filename,\'w\')
fw.write(content)
fw.close()

使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站或服務(wù)器端)

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 66 次瀏覽 ? 2021-12-21 12:02 ? 來(lái)自相關(guān)話(huà)題

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站或服務(wù)器端)
  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站或服務(wù)器端,然后對網(wǎng)站或服務(wù)器進(jìn)行二次開(kāi)發(fā)(seo,權重提升,轉發(fā)等)。如果網(wǎng)站或服務(wù)器使用了新浪微博商業(yè)服務(wù)(如,用來(lái)直接發(fā)廣告),那么可以做個(gè)jsonxml接口進(jìn)行實(shí)時(shí)推送。
  直接上阿里云購買(mǎi)微博服務(wù)器。賣(mài)家會(huì )給你一個(gè)配置文件。例如這個(gè)-ternews.xml進(jìn)去修改你的域名和服務(wù)器配置。
  twitter有個(gè)跨站http請求轉發(fā),mailtosmtp,
  voip轉發(fā)這是已經(jīng)被證明的事情。但是微博為了支持twitter服務(wù),要求用戶(hù)需要登錄才能轉發(fā),這無(wú)疑增加了這部分功能的流失量。
  你試試電腦和手機同時(shí)登錄新浪微博,如果登錄就會(huì )默認跳轉到新浪的官方網(wǎng)站(我覺(jué)得這是新浪微博使用的策略),
  微博服務(wù)器不是客戶(hù)端地址,我都是mailtosmtp。
  先設置好你需要在微博官網(wǎng)有所要上的網(wǎng)站,然后根據網(wǎng)站,統一訂閱(及上傳發(fā)送狀態(tài))或者自行經(jīng)營(yíng),在有心人點(diǎn)擊發(fā)送前,發(fā)一條訊息直接發(fā)送到要轉發(fā)的地址。
  開(kāi)api.轉發(fā)到/。
  這個(gè)似乎可以吧?不過(guò)要看你是個(gè)人或者網(wǎng)站還是企業(yè)的,如果是個(gè)人的需要在同一頁(yè)面放你的網(wǎng)站或者企業(yè)網(wǎng)站, 查看全部

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站或服務(wù)器端)
  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站或服務(wù)器端,然后對網(wǎng)站或服務(wù)器進(jìn)行二次開(kāi)發(fā)(seo,權重提升,轉發(fā)等)。如果網(wǎng)站或服務(wù)器使用了新浪微博商業(yè)服務(wù)(如,用來(lái)直接發(fā)廣告),那么可以做個(gè)jsonxml接口進(jìn)行實(shí)時(shí)推送。
  直接上阿里云購買(mǎi)微博服務(wù)器。賣(mài)家會(huì )給你一個(gè)配置文件。例如這個(gè)-ternews.xml進(jìn)去修改你的域名和服務(wù)器配置。
  twitter有個(gè)跨站http請求轉發(fā),mailtosmtp,
  voip轉發(fā)這是已經(jīng)被證明的事情。但是微博為了支持twitter服務(wù),要求用戶(hù)需要登錄才能轉發(fā),這無(wú)疑增加了這部分功能的流失量。
  你試試電腦和手機同時(shí)登錄新浪微博,如果登錄就會(huì )默認跳轉到新浪的官方網(wǎng)站(我覺(jué)得這是新浪微博使用的策略),
  微博服務(wù)器不是客戶(hù)端地址,我都是mailtosmtp。
  先設置好你需要在微博官網(wǎng)有所要上的網(wǎng)站,然后根據網(wǎng)站,統一訂閱(及上傳發(fā)送狀態(tài))或者自行經(jīng)營(yíng),在有心人點(diǎn)擊發(fā)送前,發(fā)一條訊息直接發(fā)送到要轉發(fā)的地址。
  開(kāi)api.轉發(fā)到/。
  這個(gè)似乎可以吧?不過(guò)要看你是個(gè)人或者網(wǎng)站還是企業(yè)的,如果是個(gè)人的需要在同一頁(yè)面放你的網(wǎng)站或者企業(yè)網(wǎng)站,

使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(新浪微博開(kāi)放平臺做個(gè)實(shí)踐,開(kāi)發(fā)一個(gè)功能簡(jiǎn)單的android客戶(hù)端)

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 66 次瀏覽 ? 2021-12-21 02:11 ? 來(lái)自相關(guān)話(huà)題

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(新浪微博開(kāi)放平臺做個(gè)實(shí)踐,開(kāi)發(fā)一個(gè)功能簡(jiǎn)單的android客戶(hù)端)
  介紹
  最近不太忙,花了點(diǎn)時(shí)間學(xué)習Android應用開(kāi)發(fā)。經(jīng)過(guò)兩周的學(xué)習,我在學(xué)習的同時(shí)也寫(xiě)了很多demo例子。您可以播放來(lái)自基本控件和基本動(dòng)畫(huà)效果的大量演示,并繼續更新和下載。
  從本周開(kāi)始,我打算以新浪微博開(kāi)放平臺為實(shí)踐,開(kāi)發(fā)一個(gè)簡(jiǎn)單的Android客戶(hù)端,盡可能完善功能。
  今天的內容
  
  上圖是這個(gè)客戶(hù)端的主界面。目前只拿到了前20條數據。您也可以單擊刷新來(lái)刷新數據。功能比較簡(jiǎn)單。
  運行系統為android2.2.
  用到的技術(shù)點(diǎn)包括ListView、自定義ListAdapter、多線(xiàn)程相關(guān)的Message、Handler、認證相關(guān)的OAuth、用戶(hù)圖片的異步加載。
  新浪微博的驗證使用了signpost的OAuth組件,沒(méi)有使用微博的SDK。
  
  來(lái)源下載:新浪微博2
  下載源代碼后,將后綴改為rar,使用壓縮軟件解壓即可。
  關(guān)于 OAuth 身份驗證
  OAuth 是一種流行的授權方案。twitter、facebook、google等大型開(kāi)放平臺均支持oauth認證方式。新浪微博、騰訊微博、163微博等國內開(kāi)放平臺也已支持。這種驗證方式。
  引用維基百科的相關(guān)說(shuō)明
  “Oauth 是一種開(kāi)放標準,允許用戶(hù)允許第三方應用訪(fǎng)問(wèn)用戶(hù)在某個(gè)網(wǎng)站上的私有資源,而無(wú)需將用戶(hù)名和密碼傳遞給第三方應用。oauth 允許用戶(hù)提供一個(gè)令牌,而不是用戶(hù)名和密碼來(lái)訪(fǎng)問(wèn)它們存儲在特定服務(wù)提供商中的數據?!?br />   例如:
  用戶(hù)A在服務(wù)提供者B上存儲了一些資源,B支持oauth授權方式。A 是 B 上的注冊用戶(hù),擁有用戶(hù)名和密碼。您可以通過(guò)使用用戶(hù)名和密碼登錄 B 來(lái)查看您的資源。假設有一個(gè)應用C,用戶(hù)A在使用C時(shí)需要將資源存儲在B上,實(shí)現C在B上展示資源有兩種方式。
  這時(shí)候C可以使用B開(kāi)啟的oauth授權機制,當用戶(hù)A想要展示B上的資源時(shí),C會(huì )跳轉到B的認證頁(yè)面,用戶(hù)在B的頁(yè)面輸入用戶(hù)名和密碼。通過(guò)后,會(huì )詢(xún)問(wèn)用戶(hù)是否為C應用開(kāi)發(fā)相關(guān)資源。用戶(hù)可以自定義C可以訪(fǎng)問(wèn)的資源,然后跳轉回C應用。這樣就不用擔心用戶(hù)名和密碼,也不會(huì )因為同時(shí)存儲多個(gè)資源而導致維護問(wèn)題。
  你可以通過(guò)下面的網(wǎng)站了解更多關(guān)于oauth的具體技術(shù)細節。
  
  從上圖我們可以看出,實(shí)際的流程分為消費者和提供者兩部分。Consumer是例子中的c應用,provider是例子中的B服務(wù)提供者。
  使用OAuth進(jìn)行認證授權的過(guò)程如下:
  用戶(hù)訪(fǎng)問(wèn)客戶(hù)端的網(wǎng)站,想要操作服務(wù)提供者中存儲的用戶(hù)資源??蛻?hù)端向服務(wù)提供者請求一個(gè)臨時(shí)令牌。在服務(wù)提供者驗證客戶(hù)端的身份后,它會(huì )授予一個(gè)臨時(shí)令牌??蛻?hù)端獲取臨時(shí)令牌后,將用戶(hù)引導至服務(wù)提供商的授權頁(yè)面,請求用戶(hù)授權。在這個(gè)過(guò)程中,臨時(shí)令牌和客戶(hù)端的回調連接被發(fā)送給服務(wù)提供者。用戶(hù)在服務(wù)提供者的網(wǎng)頁(yè)上輸入用戶(hù)名和密碼,然后授權客戶(hù)端訪(fǎng)問(wèn)所請求的資源。授權成功后,服務(wù)提供者將用戶(hù)引導回客戶(hù)端的網(wǎng)頁(yè)??蛻?hù)端根據臨時(shí)令牌從服務(wù)提供者處獲取訪(fǎng)問(wèn)令牌。服務(wù)提供者根據臨時(shí)令牌和用戶(hù)的授權向客戶(hù)端授予訪(fǎng)問(wèn)令牌??蛻?hù)端使用獲取的訪(fǎng)問(wèn)令牌訪(fǎng)問(wèn)存儲在服務(wù)提供者上的受保護資源。新浪微博上的Oauth
  
  借用新浪微博上的oauth驗證流程圖。
  當我們在新浪微博開(kāi)放平臺上創(chuàng )建一個(gè)新的應用程序時(shí),我們會(huì )給新的應用程序分配一個(gè)key和secret,即consumerKey和consumerSecret。通過(guò)這兩件事,我們去到request_token,然后將用戶(hù)重定向到新浪微博平臺的授權頁(yè)面。授權后,我們將根據 callback_url 重定向到我們應用程序的地址。我們再次使用request_token獲取access_token,后面需要傳遞。訪(fǎng)問(wèn)令牌訪(fǎng)問(wèn)開(kāi)放平臺提供的需要驗證的接口。
  當然,那些不需要驗證就可以訪(fǎng)問(wèn)的接口,直接使用key就可以訪(fǎng)問(wèn)了。具體請參考開(kāi)放平臺提供的API文檔。
  騰訊微博和163微博的開(kāi)放平臺在原理和實(shí)現上是相似的。
  包c(diǎn)om. 新浪微博2;導入 oauth。路標。OAuth消費者;導入 oauth。路標。OAuthProvider;導入 oauth。路標。公地http。CommonsHttpOAuthConsumer; 導入 oauth。路標。公地http。CommonsHttpOAuthProvider; 導入 oauth。路標。例外。OAuth通信異常;導入 oauth。路標。例外。OAuthExpectationFailedException; 導入 oauth。路標。例外。OAuthMessageSignerException; 導入 oauth。路標。例外。OAuthNotAuthorizedException; 公共類(lèi) OAuth {私有 OAuthConsumer mConsumer; 私有 OAuthProvider mProvider;public static final String CALLBACK_URL = "sinaweibo2://WeiboListActivity"; 公共靜態(tài)最終字符串CONSUMER_KEY =“1849239616”;公共靜態(tài)最終字符串 CONSUMER_SECRET = "b2137bf782d5a8394"
  噸。新浪。com。cn/oauth/request_token"; public static final String ACCESS_TOKEN_URL = ". 噸。新浪。com。cn/oauth/access_token"; public static final String AUTHORIZE_URL = ". 噸。新浪。com。cn/oauth/authorize"; public OAuth() {} public String RetrieveAuthUrl() 拋出 OAuthMessageSignerException, OAuthNotAuthorizedException, OAuthExpectationFailedException, OAuthCommunicationException {mConsumer = new CommonsHttpOAuthConsumer(CONSUTOMER_KEY, CONSUMER_SECRET_URL, SUMERZEUMERESUERESUERUrl 提供者字符串); = mProvider。
  檢索請求令牌(mConsumer,CALLBACK_URL);return authUrl;} public void RetrieveAccessToken(String verifier) throws OAuthMessageSignerException, OAuthNotAuthorizedException, OAuthExpectationFailedException, OAuthCommunicationException {mProvider. setOAuth10a(true); 供應商。檢索訪(fǎng)問(wèn)令牌(mConsumer,驗證器);OAuth 用戶(hù)。USER_ID=mProvider。獲取響應參數()。getFirst("user_id"); OAuth 用戶(hù)。ACCESS_TOKEN = mConsumer。獲取令牌();OAuth 用戶(hù)。ACCESS_TOKEN_SECRET = mConsumer。getTokenSecret();}}
  更多功能
  接下來(lái)主要有兩個(gè)功能需要改進(jìn),一個(gè)是分頁(yè)瀏覽,一個(gè)是發(fā)布微博。
  未來(lái)可能會(huì )支持圖片發(fā)布等實(shí)用功能。
  有UI美化和性能優(yōu)化。
  總結
  學(xué)習過(guò)程中看了兩本書(shū),Pro.Android.2.pdf和Professional.Android.2.Application.Development.(Wrox,.2010,.0470565527).pdf,都是很不錯的入門(mén)書(shū)籍,我沒(méi)有全部看完,看了大部分之后,會(huì )一邊看一邊寫(xiě)demo。
  同時(shí),我每天都會(huì )在論壇,eoe的開(kāi)發(fā)者門(mén)戶(hù)?;卮饐?wèn)題、解決問(wèn)題、提問(wèn)、發(fā)帖,簡(jiǎn)而言之就是鍛煉自己,強迫自己鍛煉基礎和思維。
  論壇上有很多中文pdf教程,但大部分都是從android開(kāi)發(fā)者中心的Dev Guide和Resources中的內容翻譯過(guò)來(lái)的。所以我覺(jué)得如果英文不是很差的話(huà),建議直接閱讀上面兩節,同時(shí)練習其中的例子,保證兩周內有很大的進(jìn)步。
  參考
  Technorati 標簽:android、開(kāi)放平臺、oauth、新浪微博 查看全部

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(新浪微博開(kāi)放平臺做個(gè)實(shí)踐,開(kāi)發(fā)一個(gè)功能簡(jiǎn)單的android客戶(hù)端)
  介紹
  最近不太忙,花了點(diǎn)時(shí)間學(xué)習Android應用開(kāi)發(fā)。經(jīng)過(guò)兩周的學(xué)習,我在學(xué)習的同時(shí)也寫(xiě)了很多demo例子。您可以播放來(lái)自基本控件和基本動(dòng)畫(huà)效果的大量演示,并繼續更新和下載。
  從本周開(kāi)始,我打算以新浪微博開(kāi)放平臺為實(shí)踐,開(kāi)發(fā)一個(gè)簡(jiǎn)單的Android客戶(hù)端,盡可能完善功能。
  今天的內容
  
  上圖是這個(gè)客戶(hù)端的主界面。目前只拿到了前20條數據。您也可以單擊刷新來(lái)刷新數據。功能比較簡(jiǎn)單。
  運行系統為android2.2.
  用到的技術(shù)點(diǎn)包括ListView、自定義ListAdapter、多線(xiàn)程相關(guān)的Message、Handler、認證相關(guān)的OAuth、用戶(hù)圖片的異步加載。
  新浪微博的驗證使用了signpost的OAuth組件,沒(méi)有使用微博的SDK。
  
  來(lái)源下載:新浪微博2
  下載源代碼后,將后綴改為rar,使用壓縮軟件解壓即可。
  關(guān)于 OAuth 身份驗證
  OAuth 是一種流行的授權方案。twitter、facebook、google等大型開(kāi)放平臺均支持oauth認證方式。新浪微博、騰訊微博、163微博等國內開(kāi)放平臺也已支持。這種驗證方式。
  引用維基百科的相關(guān)說(shuō)明
  “Oauth 是一種開(kāi)放標準,允許用戶(hù)允許第三方應用訪(fǎng)問(wèn)用戶(hù)在某個(gè)網(wǎng)站上的私有資源,而無(wú)需將用戶(hù)名和密碼傳遞給第三方應用。oauth 允許用戶(hù)提供一個(gè)令牌,而不是用戶(hù)名和密碼來(lái)訪(fǎng)問(wèn)它們存儲在特定服務(wù)提供商中的數據?!?br />   例如:
  用戶(hù)A在服務(wù)提供者B上存儲了一些資源,B支持oauth授權方式。A 是 B 上的注冊用戶(hù),擁有用戶(hù)名和密碼。您可以通過(guò)使用用戶(hù)名和密碼登錄 B 來(lái)查看您的資源。假設有一個(gè)應用C,用戶(hù)A在使用C時(shí)需要將資源存儲在B上,實(shí)現C在B上展示資源有兩種方式。
  這時(shí)候C可以使用B開(kāi)啟的oauth授權機制,當用戶(hù)A想要展示B上的資源時(shí),C會(huì )跳轉到B的認證頁(yè)面,用戶(hù)在B的頁(yè)面輸入用戶(hù)名和密碼。通過(guò)后,會(huì )詢(xún)問(wèn)用戶(hù)是否為C應用開(kāi)發(fā)相關(guān)資源。用戶(hù)可以自定義C可以訪(fǎng)問(wèn)的資源,然后跳轉回C應用。這樣就不用擔心用戶(hù)名和密碼,也不會(huì )因為同時(shí)存儲多個(gè)資源而導致維護問(wèn)題。
  你可以通過(guò)下面的網(wǎng)站了解更多關(guān)于oauth的具體技術(shù)細節。
  
  從上圖我們可以看出,實(shí)際的流程分為消費者和提供者兩部分。Consumer是例子中的c應用,provider是例子中的B服務(wù)提供者。
  使用OAuth進(jìn)行認證授權的過(guò)程如下:
  用戶(hù)訪(fǎng)問(wèn)客戶(hù)端的網(wǎng)站,想要操作服務(wù)提供者中存儲的用戶(hù)資源??蛻?hù)端向服務(wù)提供者請求一個(gè)臨時(shí)令牌。在服務(wù)提供者驗證客戶(hù)端的身份后,它會(huì )授予一個(gè)臨時(shí)令牌??蛻?hù)端獲取臨時(shí)令牌后,將用戶(hù)引導至服務(wù)提供商的授權頁(yè)面,請求用戶(hù)授權。在這個(gè)過(guò)程中,臨時(shí)令牌和客戶(hù)端的回調連接被發(fā)送給服務(wù)提供者。用戶(hù)在服務(wù)提供者的網(wǎng)頁(yè)上輸入用戶(hù)名和密碼,然后授權客戶(hù)端訪(fǎng)問(wèn)所請求的資源。授權成功后,服務(wù)提供者將用戶(hù)引導回客戶(hù)端的網(wǎng)頁(yè)??蛻?hù)端根據臨時(shí)令牌從服務(wù)提供者處獲取訪(fǎng)問(wèn)令牌。服務(wù)提供者根據臨時(shí)令牌和用戶(hù)的授權向客戶(hù)端授予訪(fǎng)問(wèn)令牌??蛻?hù)端使用獲取的訪(fǎng)問(wèn)令牌訪(fǎng)問(wèn)存儲在服務(wù)提供者上的受保護資源。新浪微博上的Oauth
  
  借用新浪微博上的oauth驗證流程圖。
  當我們在新浪微博開(kāi)放平臺上創(chuàng )建一個(gè)新的應用程序時(shí),我們會(huì )給新的應用程序分配一個(gè)key和secret,即consumerKey和consumerSecret。通過(guò)這兩件事,我們去到request_token,然后將用戶(hù)重定向到新浪微博平臺的授權頁(yè)面。授權后,我們將根據 callback_url 重定向到我們應用程序的地址。我們再次使用request_token獲取access_token,后面需要傳遞。訪(fǎng)問(wèn)令牌訪(fǎng)問(wèn)開(kāi)放平臺提供的需要驗證的接口。
  當然,那些不需要驗證就可以訪(fǎng)問(wèn)的接口,直接使用key就可以訪(fǎng)問(wèn)了。具體請參考開(kāi)放平臺提供的API文檔。
  騰訊微博和163微博的開(kāi)放平臺在原理和實(shí)現上是相似的。
  包c(diǎn)om. 新浪微博2;導入 oauth。路標。OAuth消費者;導入 oauth。路標。OAuthProvider;導入 oauth。路標。公地http。CommonsHttpOAuthConsumer; 導入 oauth。路標。公地http。CommonsHttpOAuthProvider; 導入 oauth。路標。例外。OAuth通信異常;導入 oauth。路標。例外。OAuthExpectationFailedException; 導入 oauth。路標。例外。OAuthMessageSignerException; 導入 oauth。路標。例外。OAuthNotAuthorizedException; 公共類(lèi) OAuth {私有 OAuthConsumer mConsumer; 私有 OAuthProvider mProvider;public static final String CALLBACK_URL = "sinaweibo2://WeiboListActivity"; 公共靜態(tài)最終字符串CONSUMER_KEY =“1849239616”;公共靜態(tài)最終字符串 CONSUMER_SECRET = "b2137bf782d5a8394"
  噸。新浪。com。cn/oauth/request_token"; public static final String ACCESS_TOKEN_URL = ". 噸。新浪。com。cn/oauth/access_token"; public static final String AUTHORIZE_URL = ". 噸。新浪。com。cn/oauth/authorize"; public OAuth() {} public String RetrieveAuthUrl() 拋出 OAuthMessageSignerException, OAuthNotAuthorizedException, OAuthExpectationFailedException, OAuthCommunicationException {mConsumer = new CommonsHttpOAuthConsumer(CONSUTOMER_KEY, CONSUMER_SECRET_URL, SUMERZEUMERESUERESUERUrl 提供者字符串); = mProvider。
  檢索請求令牌(mConsumer,CALLBACK_URL);return authUrl;} public void RetrieveAccessToken(String verifier) throws OAuthMessageSignerException, OAuthNotAuthorizedException, OAuthExpectationFailedException, OAuthCommunicationException {mProvider. setOAuth10a(true); 供應商。檢索訪(fǎng)問(wèn)令牌(mConsumer,驗證器);OAuth 用戶(hù)。USER_ID=mProvider。獲取響應參數()。getFirst("user_id"); OAuth 用戶(hù)。ACCESS_TOKEN = mConsumer。獲取令牌();OAuth 用戶(hù)。ACCESS_TOKEN_SECRET = mConsumer。getTokenSecret();}}
  更多功能
  接下來(lái)主要有兩個(gè)功能需要改進(jìn),一個(gè)是分頁(yè)瀏覽,一個(gè)是發(fā)布微博。
  未來(lái)可能會(huì )支持圖片發(fā)布等實(shí)用功能。
  有UI美化和性能優(yōu)化。
  總結
  學(xué)習過(guò)程中看了兩本書(shū),Pro.Android.2.pdf和Professional.Android.2.Application.Development.(Wrox,.2010,.0470565527).pdf,都是很不錯的入門(mén)書(shū)籍,我沒(méi)有全部看完,看了大部分之后,會(huì )一邊看一邊寫(xiě)demo。
  同時(shí),我每天都會(huì )在論壇,eoe的開(kāi)發(fā)者門(mén)戶(hù)?;卮饐?wèn)題、解決問(wèn)題、提問(wèn)、發(fā)帖,簡(jiǎn)而言之就是鍛煉自己,強迫自己鍛煉基礎和思維。
  論壇上有很多中文pdf教程,但大部分都是從android開(kāi)發(fā)者中心的Dev Guide和Resources中的內容翻譯過(guò)來(lái)的。所以我覺(jué)得如果英文不是很差的話(huà),建議直接閱讀上面兩節,同時(shí)練習其中的例子,保證兩周內有很大的進(jìn)步。
  參考
  Technorati 標簽:android、開(kāi)放平臺、oauth、新浪微博

使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(新浪微博的API研究研究,實(shí)現了類(lèi)拷過(guò)來(lái))

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 51 次瀏覽 ? 2021-12-20 11:12 ? 來(lái)自相關(guān)話(huà)題

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(新浪微博的API研究研究,實(shí)現了類(lèi)拷過(guò)來(lái))
  今天發(fā)布了一個(gè)關(guān)于新浪微博API的研究,現在已經(jīng)實(shí)現了發(fā)布微博的功能,包括帶圖片的微博。為安全起見(jiàn),新浪微博API不提供微博賬號密碼登錄功能。相反,它使用 OAuth 授權。用戶(hù)通過(guò)瀏覽器訪(fǎng)問(wèn)新浪網(wǎng)站進(jìn)行登錄,登錄成功后,瀏覽器將key和secret返回給程序。
  main.xml:
  一個(gè)登錄按鈕、一個(gè)輸入框和一個(gè)發(fā)布按鈕
  因為是接收瀏覽器返回的數據,所以AndroidManifest.xml在注冊Activity時(shí)必須添加一個(gè)Intent-Filter。
  intent-filter 必須寫(xiě)成兩段。如果寫(xiě)在一起,就不會(huì )被激活。
  簡(jiǎn)單起見(jiàn),直接復制新浪示例中的OAuthConstant類(lèi):
  接下來(lái)是最關(guān)鍵的主程序:
  
package com.pocketdigi.weibo;

import java.io.File;

import weibo4android.Weibo;
import weibo4android.WeiboException;
import weibo4android.http.AccessToken;
import weibo4android.http.RequestToken;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class Main extends Activity {
/** Called when the activity is first created. */
String key = "", secret = "";
Button login,send;
EditText status;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
System.setProperty("weibo4j.oauth.consumerKey", "3997936609");
System.setProperty("weibo4j.oauth.consumerSecret",
"8bc9e3bfd6ae8e3b2b8bda9079918950");
//設置在新浪應用開(kāi)放平臺申請的應用的key和secret
login=(Button)findViewById(R.id.login);
send=(Button)findViewById(R.id.send);
status=(EditText)findViewById(R.id.status);
login.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
login();
//登錄
}});
send.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String text=String.valueOf(status.getText());
Weibo weibo = new Weibo();
weibo.setToken(key,secret);
try {
//weibo.updateStatus(text);
//只發(fā)文字
File f=new File("/sdcard/wallpaper/129567208597069400.jpg");
weibo.uploadStatus(text,f );
//發(fā)文字+圖片,這里需要導入commons-httpclient-3.0.1.jar,自己網(wǎng)上下
//在實(shí)際項目上,最好放Thread里,因為按下去的時(shí)候按鈕會(huì )卡
} catch (WeiboException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}});
}

@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
//啟動(dòng)時(shí)執行檢測是否來(lái)自網(wǎng)頁(yè)登錄返回
//如果是,獲取key和secret
//否則讀取SharedPreferences
//若得不到key和secret,直接跳轉登錄
Uri uri = this.getIntent().getData();
if (uri != null) {
//如果是瀏覽器返回
try {
RequestToken requestToken = OAuthConstant.getInstance()
.getRequestToken();
AccessToken accessToken = requestToken.getAccessToken(uri
.getQueryParameter("oauth_verifier"));
OAuthConstant.getInstance().setAccessToken(accessToken);
// 保存
Editor sharedata = getSharedPreferences("WeiBo", 0).edit();
sharedata.putString("key", accessToken.getToken());
sharedata.putString("secret", accessToken.getTokenSecret());
sharedata.commit();
key = accessToken.getToken();
secret = accessToken.getTokenSecret();
} catch (WeiboException e) {
e.printStackTrace();
}
} else {
//如果是用戶(hù)自己?jiǎn)?dòng)
SharedPreferences settings = getSharedPreferences("WeiBo", 0);
key = settings.getString("key", "");
secret = settings.getString("secret", "");
}
if (key.equals("") || secret.equals("")) {
Toast.makeText(this, "尚未登錄", Toast.LENGTH_LONG).show();
login();
//跳轉到瀏覽器登錄

}

}
public void login(){
Weibo weibo = OAuthConstant.getInstance().getWeibo();
RequestToken requestToken;
try {
requestToken =weibo.getOAuthRequestToken("sina://weibo");
//為了避免與同類(lèi)應用沖突,還是自己改下URI吧
Uri uri2 = Uri.parse(requestToken.getAuthenticationURL()+ "&from=xweibo");
OAuthConstant.getInstance().setRequestToken(requestToken);
startActivity(new Intent(Intent.ACTION_VIEW, uri2));
} catch (WeiboException e) {
e.printStackTrace();
}
}
}
  發(fā)送圖片需要導入commons-httpclient-3.0.1.jar,否則啟動(dòng)會(huì )報錯,當然是weibo4android-1. 2.0. jar 必不可少 查看全部

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(新浪微博的API研究研究,實(shí)現了類(lèi)拷過(guò)來(lái))
  今天發(fā)布了一個(gè)關(guān)于新浪微博API的研究,現在已經(jīng)實(shí)現了發(fā)布微博的功能,包括帶圖片的微博。為安全起見(jiàn),新浪微博API不提供微博賬號密碼登錄功能。相反,它使用 OAuth 授權。用戶(hù)通過(guò)瀏覽器訪(fǎng)問(wèn)新浪網(wǎng)站進(jìn)行登錄,登錄成功后,瀏覽器將key和secret返回給程序。
  main.xml:
  一個(gè)登錄按鈕、一個(gè)輸入框和一個(gè)發(fā)布按鈕
  因為是接收瀏覽器返回的數據,所以AndroidManifest.xml在注冊Activity時(shí)必須添加一個(gè)Intent-Filter。
  intent-filter 必須寫(xiě)成兩段。如果寫(xiě)在一起,就不會(huì )被激活。
  簡(jiǎn)單起見(jiàn),直接復制新浪示例中的OAuthConstant類(lèi):
  接下來(lái)是最關(guān)鍵的主程序:
  
package com.pocketdigi.weibo;

import java.io.File;

import weibo4android.Weibo;
import weibo4android.WeiboException;
import weibo4android.http.AccessToken;
import weibo4android.http.RequestToken;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class Main extends Activity {
/** Called when the activity is first created. */
String key = "", secret = "";
Button login,send;
EditText status;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
System.setProperty("weibo4j.oauth.consumerKey", "3997936609");
System.setProperty("weibo4j.oauth.consumerSecret",
"8bc9e3bfd6ae8e3b2b8bda9079918950");
//設置在新浪應用開(kāi)放平臺申請的應用的key和secret
login=(Button)findViewById(R.id.login);
send=(Button)findViewById(R.id.send);
status=(EditText)findViewById(R.id.status);
login.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
login();
//登錄
}});
send.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String text=String.valueOf(status.getText());
Weibo weibo = new Weibo();
weibo.setToken(key,secret);
try {
//weibo.updateStatus(text);
//只發(fā)文字
File f=new File("/sdcard/wallpaper/129567208597069400.jpg");
weibo.uploadStatus(text,f );
//發(fā)文字+圖片,這里需要導入commons-httpclient-3.0.1.jar,自己網(wǎng)上下
//在實(shí)際項目上,最好放Thread里,因為按下去的時(shí)候按鈕會(huì )卡
} catch (WeiboException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}});
}

@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
//啟動(dòng)時(shí)執行檢測是否來(lái)自網(wǎng)頁(yè)登錄返回
//如果是,獲取key和secret
//否則讀取SharedPreferences
//若得不到key和secret,直接跳轉登錄
Uri uri = this.getIntent().getData();
if (uri != null) {
//如果是瀏覽器返回
try {
RequestToken requestToken = OAuthConstant.getInstance()
.getRequestToken();
AccessToken accessToken = requestToken.getAccessToken(uri
.getQueryParameter("oauth_verifier"));
OAuthConstant.getInstance().setAccessToken(accessToken);
// 保存
Editor sharedata = getSharedPreferences("WeiBo", 0).edit();
sharedata.putString("key", accessToken.getToken());
sharedata.putString("secret", accessToken.getTokenSecret());
sharedata.commit();
key = accessToken.getToken();
secret = accessToken.getTokenSecret();
} catch (WeiboException e) {
e.printStackTrace();
}
} else {
//如果是用戶(hù)自己?jiǎn)?dòng)
SharedPreferences settings = getSharedPreferences("WeiBo", 0);
key = settings.getString("key", "");
secret = settings.getString("secret", "");
}
if (key.equals("") || secret.equals("")) {
Toast.makeText(this, "尚未登錄", Toast.LENGTH_LONG).show();
login();
//跳轉到瀏覽器登錄

}

}
public void login(){
Weibo weibo = OAuthConstant.getInstance().getWeibo();
RequestToken requestToken;
try {
requestToken =weibo.getOAuthRequestToken("sina://weibo");
//為了避免與同類(lèi)應用沖突,還是自己改下URI吧
Uri uri2 = Uri.parse(requestToken.getAuthenticationURL()+ "&from=xweibo");
OAuthConstant.getInstance().setRequestToken(requestToken);
startActivity(new Intent(Intent.ACTION_VIEW, uri2));
} catch (WeiboException e) {
e.printStackTrace();
}
}
}
  發(fā)送圖片需要導入commons-httpclient-3.0.1.jar,否則啟動(dòng)會(huì )報錯,當然是weibo4android-1. 2.0. jar 必不可少

使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(利用PHP進(jìn)行新浪微博API開(kāi)發(fā)的內容一個(gè)整理和說(shuō)明)

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 39 次瀏覽 ? 2021-12-20 11:12 ? 來(lái)自相關(guān)話(huà)題

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(利用PHP進(jìn)行新浪微博API開(kāi)發(fā)的內容一個(gè)整理和說(shuō)明)
  在開(kāi)發(fā)和學(xué)習的過(guò)程中,我覺(jué)得雖然不是太難,但還是有一些問(wèn)題需要我們注意。今天在開(kāi)發(fā)學(xué)習的過(guò)程中,簡(jiǎn)單的用PHP開(kāi)發(fā)了新浪微博API。整理和說(shuō)明內容
  現在玩微博的人越來(lái)越多,微博上的第三方應用開(kāi)??發(fā)也越來(lái)越多。偶然接觸到新浪微博API開(kāi)發(fā)。新浪微博API開(kāi)發(fā)資源比較大。新浪微博為開(kāi)發(fā)者提供了一個(gè)平臺。網(wǎng)站是: 收錄新浪微博開(kāi)發(fā)的綜合信息,包括開(kāi)發(fā)者的使用和介紹、各種語(yǔ)言的API功能介紹文檔、SDK等資料。.
  在開(kāi)發(fā)和學(xué)習的過(guò)程中,我覺(jué)得雖然不是太難,但還是有一些問(wèn)題需要我們注意。今天在開(kāi)發(fā)學(xué)習的過(guò)程中,簡(jiǎn)單的用PHP開(kāi)發(fā)了新浪微博API。內容組織和解釋?zhuān)?br />   新浪微博API開(kāi)發(fā)前的準備
  首先到新浪微博開(kāi)放平臺下載基于PHP的SDK開(kāi)發(fā)包。下載地址為:
  下載完成后放到自己的開(kāi)發(fā)環(huán)境中解壓。演示程序也包括在內。我們可以參考它的示例程序進(jìn)行編寫(xiě)。
  新浪微博API開(kāi)發(fā)最重要的用戶(hù)授權流程
  事實(shí)上,開(kāi)發(fā)過(guò)程中的很多問(wèn)題都集中在用戶(hù)授權階段。我開(kāi)發(fā)的第三方應用使用的是OAuth授權。新浪微博開(kāi)放平臺的OAuth授權流程非常清晰完整。我們你可以看看。這里我將從示例開(kāi)發(fā)的角度進(jìn)行介紹和說(shuō)明。
  1.首先獲取未授權的Request Token
  復制代碼代碼如下:
  $o = new WeiboOAuth( WB_AKEY, WB_SKEY );
  $keys = $o-&gt;getRequestToken();
  //echo($keys['oauth_token'].':'.$keys['oauth_token_secret']);
  我們需要在新浪微博開(kāi)放平臺注冊一個(gè)賬號,或者直接用我們的新浪微博賬號登錄,進(jìn)入我的應用,然后按照提示創(chuàng )建我們自己的第三方應用。創(chuàng )建完成后,我們可以得到兩個(gè)授權App Key和App Secret值,這兩個(gè)值是我們應用開(kāi)發(fā)的關(guān)鍵。
  獲取到授權值后,我們可以通過(guò)上面的代碼來(lái)獲取未授權的Request Token值,該值會(huì )保存在$key數組變量中。
  2. 然后請求用戶(hù)授權token
  復制代碼代碼如下:
  $_SESSION['keys'] = $keys;
  aurl = $o-&gt;getAuthorizeURL( $keys['oauth_token'] ,false,'');
  獲取到未授權Request Token值后,我們就可以使用上面的代碼準備去新浪微博授權頁(yè)面進(jìn)行授權了。$aurl 是授權鏈接頁(yè)面。拿到$aurl后,我們可以使用header()直接跳轉到那個(gè)授權頁(yè)面,然后用戶(hù)輸入新浪微博賬號和密碼進(jìn)行授權。授權完成后會(huì )自動(dòng)跳轉回你最后一個(gè)參數設置的回調頁(yè)面:這個(gè)鏈接可以設置為上一個(gè)頁(yè)面,這樣授權完成后會(huì )自動(dòng)再次跳轉回來(lái)。
  需要注意的是,需要設置session key的值,在下面獲取的授權Access Token中需要。很多朋友可能會(huì )參考開(kāi)放平臺上的說(shuō)明進(jìn)行授權,但是發(fā)現總是報錯。這通常是問(wèn)題所在。您尚未設置會(huì )話(huà)的鍵值。當然,下面無(wú)法獲取Access Token的值。必須記住這一點(diǎn)。
  3.用戶(hù)最后授權的Access Token
  復制代碼代碼如下:
  $o = 新微博OAuth( WB_AKEY,
  WB_SKEY,
  $_SESSION['keys']['oauth_token'],
  $_SESSION['keys']['oauth_token_secret'] );
  $last_key = $o-&gt;getAccessToken( $_REQUEST['oauth_verifier']);
  回聲($last_key['oauth_token']);
  以上代碼最終獲得了用戶(hù)授權的Access Token。一共有兩個(gè)值,存放在$last_key數組變量中。我們也可以看到最后兩個(gè)參數是我們之前設置的session值。至此,基本完成。這是一個(gè)完整的新浪微博用戶(hù)授權流程。
  授權后工作
  授權完成后,我們就可以開(kāi)始調用新浪微博提供的各種API函數接口進(jìn)行實(shí)際應用開(kāi)發(fā)了。這里我簡(jiǎn)單介紹一下獲取最新微博記錄的界面。其他類(lèi)似。
  獲取新浪微博最新信息的API接口函數為:public_timeline(),示例代碼如下:
  復制代碼代碼如下:
  //獲取前20條最新更新的公眾微博新聞
  $c = 新微博客戶(hù)端( WB_AKEY,
  WB_SKEY,
  $oauth_token,
  $oauth_token_secret );
  $msg = $c-&gt;public_timeline();
  if ($msg === false || $msg === null){
  echo "發(fā)生錯誤";
  返回假;
  }
  if (isset($msg['error_code']) &amp;&amp; isset($msg['error'])){
  echo ('Error_code:'.$msg['error_code'].'; Error:'.$msg['error']);
  返回假;
  }
  打印_r($msg);
  通常我們拿到用戶(hù)授權的access token值后,會(huì )保存在我們的user表中,對應我們應用中的賬號。之后我們就不用每次調用新浪微博的API接口都去。認證。
  上面的代碼很簡(jiǎn)單,實(shí)例化WeiboClient對象,然后直接調用接口函數public_timeline獲取返回的信息,如果沒(méi)有錯誤。通常新浪微博api接口返回的數據格式一般是Json格式或者xml格式,而我們這里是用php開(kāi)發(fā)的,那么使用Json格式數據有先天優(yōu)勢,如果返回Json格式數據,直接使用php即可。函數 json_decode() 可以轉換為 PHP 常用的數組格式。 查看全部

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(利用PHP進(jìn)行新浪微博API開(kāi)發(fā)的內容一個(gè)整理和說(shuō)明)
  在開(kāi)發(fā)和學(xué)習的過(guò)程中,我覺(jué)得雖然不是太難,但還是有一些問(wèn)題需要我們注意。今天在開(kāi)發(fā)學(xué)習的過(guò)程中,簡(jiǎn)單的用PHP開(kāi)發(fā)了新浪微博API。整理和說(shuō)明內容
  現在玩微博的人越來(lái)越多,微博上的第三方應用開(kāi)??發(fā)也越來(lái)越多。偶然接觸到新浪微博API開(kāi)發(fā)。新浪微博API開(kāi)發(fā)資源比較大。新浪微博為開(kāi)發(fā)者提供了一個(gè)平臺。網(wǎng)站是: 收錄新浪微博開(kāi)發(fā)的綜合信息,包括開(kāi)發(fā)者的使用和介紹、各種語(yǔ)言的API功能介紹文檔、SDK等資料。.
  在開(kāi)發(fā)和學(xué)習的過(guò)程中,我覺(jué)得雖然不是太難,但還是有一些問(wèn)題需要我們注意。今天在開(kāi)發(fā)學(xué)習的過(guò)程中,簡(jiǎn)單的用PHP開(kāi)發(fā)了新浪微博API。內容組織和解釋?zhuān)?br />   新浪微博API開(kāi)發(fā)前的準備
  首先到新浪微博開(kāi)放平臺下載基于PHP的SDK開(kāi)發(fā)包。下載地址為:
  下載完成后放到自己的開(kāi)發(fā)環(huán)境中解壓。演示程序也包括在內。我們可以參考它的示例程序進(jìn)行編寫(xiě)。
  新浪微博API開(kāi)發(fā)最重要的用戶(hù)授權流程
  事實(shí)上,開(kāi)發(fā)過(guò)程中的很多問(wèn)題都集中在用戶(hù)授權階段。我開(kāi)發(fā)的第三方應用使用的是OAuth授權。新浪微博開(kāi)放平臺的OAuth授權流程非常清晰完整。我們你可以看看。這里我將從示例開(kāi)發(fā)的角度進(jìn)行介紹和說(shuō)明。
  1.首先獲取未授權的Request Token
  復制代碼代碼如下:
  $o = new WeiboOAuth( WB_AKEY, WB_SKEY );
  $keys = $o-&gt;getRequestToken();
  //echo($keys['oauth_token'].':'.$keys['oauth_token_secret']);
  我們需要在新浪微博開(kāi)放平臺注冊一個(gè)賬號,或者直接用我們的新浪微博賬號登錄,進(jìn)入我的應用,然后按照提示創(chuàng )建我們自己的第三方應用。創(chuàng )建完成后,我們可以得到兩個(gè)授權App Key和App Secret值,這兩個(gè)值是我們應用開(kāi)發(fā)的關(guān)鍵。
  獲取到授權值后,我們可以通過(guò)上面的代碼來(lái)獲取未授權的Request Token值,該值會(huì )保存在$key數組變量中。
  2. 然后請求用戶(hù)授權token
  復制代碼代碼如下:
  $_SESSION['keys'] = $keys;
  aurl = $o-&gt;getAuthorizeURL( $keys['oauth_token'] ,false,'');
  獲取到未授權Request Token值后,我們就可以使用上面的代碼準備去新浪微博授權頁(yè)面進(jìn)行授權了。$aurl 是授權鏈接頁(yè)面。拿到$aurl后,我們可以使用header()直接跳轉到那個(gè)授權頁(yè)面,然后用戶(hù)輸入新浪微博賬號和密碼進(jìn)行授權。授權完成后會(huì )自動(dòng)跳轉回你最后一個(gè)參數設置的回調頁(yè)面:這個(gè)鏈接可以設置為上一個(gè)頁(yè)面,這樣授權完成后會(huì )自動(dòng)再次跳轉回來(lái)。
  需要注意的是,需要設置session key的值,在下面獲取的授權Access Token中需要。很多朋友可能會(huì )參考開(kāi)放平臺上的說(shuō)明進(jìn)行授權,但是發(fā)現總是報錯。這通常是問(wèn)題所在。您尚未設置會(huì )話(huà)的鍵值。當然,下面無(wú)法獲取Access Token的值。必須記住這一點(diǎn)。
  3.用戶(hù)最后授權的Access Token
  復制代碼代碼如下:
  $o = 新微博OAuth( WB_AKEY,
  WB_SKEY,
  $_SESSION['keys']['oauth_token'],
  $_SESSION['keys']['oauth_token_secret'] );
  $last_key = $o-&gt;getAccessToken( $_REQUEST['oauth_verifier']);
  回聲($last_key['oauth_token']);
  以上代碼最終獲得了用戶(hù)授權的Access Token。一共有兩個(gè)值,存放在$last_key數組變量中。我們也可以看到最后兩個(gè)參數是我們之前設置的session值。至此,基本完成。這是一個(gè)完整的新浪微博用戶(hù)授權流程。
  授權后工作
  授權完成后,我們就可以開(kāi)始調用新浪微博提供的各種API函數接口進(jìn)行實(shí)際應用開(kāi)發(fā)了。這里我簡(jiǎn)單介紹一下獲取最新微博記錄的界面。其他類(lèi)似。
  獲取新浪微博最新信息的API接口函數為:public_timeline(),示例代碼如下:
  復制代碼代碼如下:
  //獲取前20條最新更新的公眾微博新聞
  $c = 新微博客戶(hù)端( WB_AKEY,
  WB_SKEY,
  $oauth_token,
  $oauth_token_secret );
  $msg = $c-&gt;public_timeline();
  if ($msg === false || $msg === null){
  echo "發(fā)生錯誤";
  返回假;
  }
  if (isset($msg['error_code']) &amp;&amp; isset($msg['error'])){
  echo ('Error_code:'.$msg['error_code'].'; Error:'.$msg['error']);
  返回假;
  }
  打印_r($msg);
  通常我們拿到用戶(hù)授權的access token值后,會(huì )保存在我們的user表中,對應我們應用中的賬號。之后我們就不用每次調用新浪微博的API接口都去。認證。
  上面的代碼很簡(jiǎn)單,實(shí)例化WeiboClient對象,然后直接調用接口函數public_timeline獲取返回的信息,如果沒(méi)有錯誤。通常新浪微博api接口返回的數據格式一般是Json格式或者xml格式,而我們這里是用php開(kāi)發(fā)的,那么使用Json格式數據有先天優(yōu)勢,如果返回Json格式數據,直接使用php即可。函數 json_decode() 可以轉換為 PHP 常用的數組格式。

使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站( 利用PHP進(jìn)行新浪微博API開(kāi)發(fā)的內容進(jìn)行一個(gè)整理和說(shuō)明)

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 46 次瀏覽 ? 2021-12-20 02:13 ? 來(lái)自相關(guān)話(huà)題

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(
利用PHP進(jìn)行新浪微博API開(kāi)發(fā)的內容進(jìn)行一個(gè)整理和說(shuō)明)
  新浪微博API開(kāi)發(fā)用戶(hù)授權介紹(PHP基礎)
  更新時(shí)間:2011-09-25 22:52:37 作者:
  在開(kāi)發(fā)和學(xué)習的過(guò)程中,我覺(jué)得雖然不是太難,但還是有一些問(wèn)題需要我們注意。今天在開(kāi)發(fā)學(xué)習的過(guò)程中,簡(jiǎn)單的用PHP開(kāi)發(fā)了新浪微博API。整理和說(shuō)明內容
  現在玩微博的人越來(lái)越多,微博上的第三方應用開(kāi)??發(fā)也越來(lái)越多。偶然接觸到新浪微博API開(kāi)發(fā)。新浪微博API開(kāi)發(fā)資源比較大。新浪微博為開(kāi)發(fā)者提供了一個(gè)平臺。網(wǎng)站是: 收錄新浪微博開(kāi)發(fā)的綜合信息,包括開(kāi)發(fā)者的使用和介紹、各種語(yǔ)言的API功能介紹文檔、SDK等資料。.
  在開(kāi)發(fā)和學(xué)習的過(guò)程中,我覺(jué)得雖然不是太難,但還是有一些問(wèn)題需要我們注意。今天在開(kāi)發(fā)學(xué)習的過(guò)程中,簡(jiǎn)單的用PHP開(kāi)發(fā)了新浪微博API。內容組織和解釋?zhuān)?br />   新浪微博API開(kāi)發(fā)前的準備
  首先到新浪微博開(kāi)放平臺下載基于PHP的SDK開(kāi)發(fā)包。下載地址為:
  下載完成后放到自己的開(kāi)發(fā)環(huán)境中解壓。演示程序也包括在內。我們可以參考它的示例程序進(jìn)行編寫(xiě)。
  新浪微博API開(kāi)發(fā)最重要的用戶(hù)授權流程
  事實(shí)上,開(kāi)發(fā)過(guò)程中的很多問(wèn)題都集中在用戶(hù)授權階段。我開(kāi)發(fā)的第三方應用使用的是OAuth授權。新浪微博開(kāi)放平臺的OAuth授權流程非常清晰完整。我們你可以看看。這里我將從示例開(kāi)發(fā)的角度進(jìn)行介紹和說(shuō)明。
  1.首先獲取未授權的Request Token
  復制代碼代碼如下:
  $o = new WeiboOAuth( WB_AKEY, WB_SKEY );
  $keys = $o-&gt;getRequestToken();
  //echo($keys['oauth_token'].':'.$keys['oauth_token_secret']);
  我們需要在新浪微博開(kāi)放平臺注冊一個(gè)賬號,或者直接用我們的新浪微博賬號登錄,進(jìn)入我的應用,然后按照提示創(chuàng )建我們自己的第三方應用。創(chuàng )建完成后,我們可以得到兩個(gè)授權App Key和App Secret值,這兩個(gè)值是我們應用開(kāi)發(fā)的關(guān)鍵。
  獲取到授權值后,我們可以通過(guò)上面的代碼來(lái)獲取未授權的Request Token值,該值會(huì )保存在$key數組變量中。
  2. 然后請求用戶(hù)授權token
  復制代碼代碼如下:
  $_SESSION['keys'] = $keys;
  aurl = $o-&gt;getAuthorizeURL( $keys['oauth_token'] ,false,'');
  獲取到未授權Request Token值后,我們就可以使用上面的代碼準備去新浪微博授權頁(yè)面進(jìn)行授權了。$aurl 是授權鏈接頁(yè)面。拿到$aurl后,我們可以使用header()直接跳轉到那個(gè)授權頁(yè)面,然后用戶(hù)輸入新浪微博賬號和密碼進(jìn)行授權。授權完成后會(huì )自動(dòng)跳轉回你最后一個(gè)參數設置的回調頁(yè)面:這個(gè)鏈接可以設置為上一個(gè)頁(yè)面,這樣授權完成后會(huì )自動(dòng)再次跳轉回來(lái)。
  需要注意的是,需要設置session key的值,在下面獲取的授權Access Token中需要。很多朋友可能會(huì )參考開(kāi)放平臺上的說(shuō)明進(jìn)行授權,但是發(fā)現總是報錯。這通常是問(wèn)題所在。您尚未設置會(huì )話(huà)的鍵值。當然,下面無(wú)法獲取Access Token的值。必須記住這一點(diǎn)。
  3.用戶(hù)最后授權的Access Token
  復制代碼代碼如下:
  $o = 新微博OAuth( WB_AKEY,
  WB_SKEY,
  $_SESSION['keys']['oauth_token'],
  $_SESSION['keys']['oauth_token_secret'] );
  $last_key = $o-&gt;getAccessToken( $_REQUEST['oauth_verifier']);
  回聲($last_key['oauth_token']);
  以上代碼最終獲得了用戶(hù)授權的Access Token。一共有兩個(gè)值,存放在$last_key數組變量中。我們也可以看到最后兩個(gè)參數是我們之前設置的session值。至此,基本完成。這是一個(gè)完整的新浪微博用戶(hù)授權流程。
  授權后工作
  授權完成后,我們就可以開(kāi)始調用新浪微博提供的各種API函數接口進(jìn)行實(shí)際應用開(kāi)發(fā)了。這里我簡(jiǎn)單介紹一下獲取最新微博記錄的界面。其他類(lèi)似。
  獲取新浪微博最新信息的API接口函數為:public_timeline(),示例代碼如下:
  復制代碼代碼如下:
  //獲取前20條最新更新的公眾微博新聞
  $c = 新微博客戶(hù)端( WB_AKEY,
  WB_SKEY,
  $oauth_token,
  $oauth_token_secret );
  $msg = $c-&gt;public_timeline();
  if ($msg === false || $msg === null){
  echo "發(fā)生錯誤";
  返回假;
  }
  if (isset($msg['error_code']) &amp;&amp; isset($msg['error'])){
  echo ('Error_code:'.$msg['error_code'].'; Error:'.$msg['error']);
  返回假;
  }
  打印_r($msg);
  通常我們拿到用戶(hù)授權的access token值后,會(huì )保存在我們的user表中,對應我們應用中的賬號。之后我們就不用每次調用新浪微博的API接口都去。認證。
  上面的代碼很簡(jiǎn)單,實(shí)例化WeiboClient對象,然后直接調用接口函數public_timeline獲取返回的信息,如果沒(méi)有錯誤。通常新浪微博api接口返回的數據格式一般是Json格式或者xml格式,而我們這里是用php開(kāi)發(fā)的,那么使用Json格式數據有先天優(yōu)勢,如果返回Json格式數據,直接使用php即可。函數 json_decode() 可以轉換為 PHP 常用的數組格式。 查看全部

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(
利用PHP進(jìn)行新浪微博API開(kāi)發(fā)的內容進(jìn)行一個(gè)整理和說(shuō)明)
  新浪微博API開(kāi)發(fā)用戶(hù)授權介紹(PHP基礎)
  更新時(shí)間:2011-09-25 22:52:37 作者:
  在開(kāi)發(fā)和學(xué)習的過(guò)程中,我覺(jué)得雖然不是太難,但還是有一些問(wèn)題需要我們注意。今天在開(kāi)發(fā)學(xué)習的過(guò)程中,簡(jiǎn)單的用PHP開(kāi)發(fā)了新浪微博API。整理和說(shuō)明內容
  現在玩微博的人越來(lái)越多,微博上的第三方應用開(kāi)??發(fā)也越來(lái)越多。偶然接觸到新浪微博API開(kāi)發(fā)。新浪微博API開(kāi)發(fā)資源比較大。新浪微博為開(kāi)發(fā)者提供了一個(gè)平臺。網(wǎng)站是: 收錄新浪微博開(kāi)發(fā)的綜合信息,包括開(kāi)發(fā)者的使用和介紹、各種語(yǔ)言的API功能介紹文檔、SDK等資料。.
  在開(kāi)發(fā)和學(xué)習的過(guò)程中,我覺(jué)得雖然不是太難,但還是有一些問(wèn)題需要我們注意。今天在開(kāi)發(fā)學(xué)習的過(guò)程中,簡(jiǎn)單的用PHP開(kāi)發(fā)了新浪微博API。內容組織和解釋?zhuān)?br />   新浪微博API開(kāi)發(fā)前的準備
  首先到新浪微博開(kāi)放平臺下載基于PHP的SDK開(kāi)發(fā)包。下載地址為:
  下載完成后放到自己的開(kāi)發(fā)環(huán)境中解壓。演示程序也包括在內。我們可以參考它的示例程序進(jìn)行編寫(xiě)。
  新浪微博API開(kāi)發(fā)最重要的用戶(hù)授權流程
  事實(shí)上,開(kāi)發(fā)過(guò)程中的很多問(wèn)題都集中在用戶(hù)授權階段。我開(kāi)發(fā)的第三方應用使用的是OAuth授權。新浪微博開(kāi)放平臺的OAuth授權流程非常清晰完整。我們你可以看看。這里我將從示例開(kāi)發(fā)的角度進(jìn)行介紹和說(shuō)明。
  1.首先獲取未授權的Request Token
  復制代碼代碼如下:
  $o = new WeiboOAuth( WB_AKEY, WB_SKEY );
  $keys = $o-&gt;getRequestToken();
  //echo($keys['oauth_token'].':'.$keys['oauth_token_secret']);
  我們需要在新浪微博開(kāi)放平臺注冊一個(gè)賬號,或者直接用我們的新浪微博賬號登錄,進(jìn)入我的應用,然后按照提示創(chuàng )建我們自己的第三方應用。創(chuàng )建完成后,我們可以得到兩個(gè)授權App Key和App Secret值,這兩個(gè)值是我們應用開(kāi)發(fā)的關(guān)鍵。
  獲取到授權值后,我們可以通過(guò)上面的代碼來(lái)獲取未授權的Request Token值,該值會(huì )保存在$key數組變量中。
  2. 然后請求用戶(hù)授權token
  復制代碼代碼如下:
  $_SESSION['keys'] = $keys;
  aurl = $o-&gt;getAuthorizeURL( $keys['oauth_token'] ,false,'');
  獲取到未授權Request Token值后,我們就可以使用上面的代碼準備去新浪微博授權頁(yè)面進(jìn)行授權了。$aurl 是授權鏈接頁(yè)面。拿到$aurl后,我們可以使用header()直接跳轉到那個(gè)授權頁(yè)面,然后用戶(hù)輸入新浪微博賬號和密碼進(jìn)行授權。授權完成后會(huì )自動(dòng)跳轉回你最后一個(gè)參數設置的回調頁(yè)面:這個(gè)鏈接可以設置為上一個(gè)頁(yè)面,這樣授權完成后會(huì )自動(dòng)再次跳轉回來(lái)。
  需要注意的是,需要設置session key的值,在下面獲取的授權Access Token中需要。很多朋友可能會(huì )參考開(kāi)放平臺上的說(shuō)明進(jìn)行授權,但是發(fā)現總是報錯。這通常是問(wèn)題所在。您尚未設置會(huì )話(huà)的鍵值。當然,下面無(wú)法獲取Access Token的值。必須記住這一點(diǎn)。
  3.用戶(hù)最后授權的Access Token
  復制代碼代碼如下:
  $o = 新微博OAuth( WB_AKEY,
  WB_SKEY,
  $_SESSION['keys']['oauth_token'],
  $_SESSION['keys']['oauth_token_secret'] );
  $last_key = $o-&gt;getAccessToken( $_REQUEST['oauth_verifier']);
  回聲($last_key['oauth_token']);
  以上代碼最終獲得了用戶(hù)授權的Access Token。一共有兩個(gè)值,存放在$last_key數組變量中。我們也可以看到最后兩個(gè)參數是我們之前設置的session值。至此,基本完成。這是一個(gè)完整的新浪微博用戶(hù)授權流程。
  授權后工作
  授權完成后,我們就可以開(kāi)始調用新浪微博提供的各種API函數接口進(jìn)行實(shí)際應用開(kāi)發(fā)了。這里我簡(jiǎn)單介紹一下獲取最新微博記錄的界面。其他類(lèi)似。
  獲取新浪微博最新信息的API接口函數為:public_timeline(),示例代碼如下:
  復制代碼代碼如下:
  //獲取前20條最新更新的公眾微博新聞
  $c = 新微博客戶(hù)端( WB_AKEY,
  WB_SKEY,
  $oauth_token,
  $oauth_token_secret );
  $msg = $c-&gt;public_timeline();
  if ($msg === false || $msg === null){
  echo "發(fā)生錯誤";
  返回假;
  }
  if (isset($msg['error_code']) &amp;&amp; isset($msg['error'])){
  echo ('Error_code:'.$msg['error_code'].'; Error:'.$msg['error']);
  返回假;
  }
  打印_r($msg);
  通常我們拿到用戶(hù)授權的access token值后,會(huì )保存在我們的user表中,對應我們應用中的賬號。之后我們就不用每次調用新浪微博的API接口都去。認證。
  上面的代碼很簡(jiǎn)單,實(shí)例化WeiboClient對象,然后直接調用接口函數public_timeline獲取返回的信息,如果沒(méi)有錯誤。通常新浪微博api接口返回的數據格式一般是Json格式或者xml格式,而我們這里是用php開(kāi)發(fā)的,那么使用Json格式數據有先天優(yōu)勢,如果返回Json格式數據,直接使用php即可。函數 json_decode() 可以轉換為 PHP 常用的數組格式。

使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(關(guān)于我們Bootstrap中文網(wǎng)--創(chuàng )建于2012年的網(wǎng)站show出來(lái)吧)

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 54 次瀏覽 ? 2022-01-01 01:16 ? 來(lái)自相關(guān)話(huà)題

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(關(guān)于我們Bootstrap中文網(wǎng)--創(chuàng )建于2012年的網(wǎng)站show出來(lái)吧)
  關(guān)于我們
  Bootstrap中文網(wǎng)——成立于2012年,原因是國內沒(méi)有關(guān)于Bootstrap的好的中文教程和交流渠道。為此,我們翻譯整理了Bootstrap文檔,建立了QQ群和微博(@bootcss),以方便大家對這個(gè)CSS框架的喜愛(ài)。城市老師分享前端設計開(kāi)發(fā)經(jīng)驗。
  展示你的 Bootstrap 作品
  你是 Bootstrap 的粉絲嗎?您是否使用 Bootstrap 進(jìn)行開(kāi)發(fā)?你開(kāi)發(fā)的網(wǎng)站是Powered By Bootstrap嗎?然后展示你的網(wǎng)站表演!
  任何已經(jīng)確認使用Bootstrap CSS框架的網(wǎng)站,我們都會(huì )在“Bootstrap優(yōu)秀站推薦”列表中展示您提交的網(wǎng)站的截圖和介紹,并有機會(huì )獲得用 Bootstrap 中文在網(wǎng)頁(yè)首頁(yè)推薦。
  請發(fā)郵件至下方郵箱,并在郵件標題中注明(Bootstrap網(wǎng)站提交作品-網(wǎng)站姓名或網(wǎng)址)。
  郵件:
  加入我們
  Bootstrap中文網(wǎng)站致力于前端開(kāi)發(fā)和推廣。它堅持共享和開(kāi)放互聯(lián)網(wǎng)的精神。它旨在為前端攻城師和設計師之間提供一個(gè)交流的平臺。如果您和我們有相同的目標,我們很樂(lè )意一起工作。行。
  如果你也熱愛(ài)前端開(kāi)發(fā)、Bootstrap,并且有一顆創(chuàng )業(yè)的心,歡迎聯(lián)系我們,也歡迎你加入我們的團隊!
  郵件: 查看全部

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(關(guān)于我們Bootstrap中文網(wǎng)--創(chuàng )建于2012年的網(wǎng)站show出來(lái)吧)
  關(guān)于我們
  Bootstrap中文網(wǎng)——成立于2012年,原因是國內沒(méi)有關(guān)于Bootstrap的好的中文教程和交流渠道。為此,我們翻譯整理了Bootstrap文檔,建立了QQ群和微博(@bootcss),以方便大家對這個(gè)CSS框架的喜愛(ài)。城市老師分享前端設計開(kāi)發(fā)經(jīng)驗。
  展示你的 Bootstrap 作品
  你是 Bootstrap 的粉絲嗎?您是否使用 Bootstrap 進(jìn)行開(kāi)發(fā)?你開(kāi)發(fā)的網(wǎng)站是Powered By Bootstrap嗎?然后展示你的網(wǎng)站表演!
  任何已經(jīng)確認使用Bootstrap CSS框架的網(wǎng)站,我們都會(huì )在“Bootstrap優(yōu)秀站推薦”列表中展示您提交的網(wǎng)站的截圖和介紹,并有機會(huì )獲得用 Bootstrap 中文在網(wǎng)頁(yè)首頁(yè)推薦。
  請發(fā)郵件至下方郵箱,并在郵件標題中注明(Bootstrap網(wǎng)站提交作品-網(wǎng)站姓名或網(wǎng)址)。
  郵件:
  加入我們
  Bootstrap中文網(wǎng)站致力于前端開(kāi)發(fā)和推廣。它堅持共享和開(kāi)放互聯(lián)網(wǎng)的精神。它旨在為前端攻城師和設計師之間提供一個(gè)交流的平臺。如果您和我們有相同的目標,我們很樂(lè )意一起工作。行。
  如果你也熱愛(ài)前端開(kāi)發(fā)、Bootstrap,并且有一顆創(chuàng )業(yè)的心,歡迎聯(lián)系我們,也歡迎你加入我們的團隊!
  郵件:

使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(如何把這種方法應用在組織學(xué)習中成為越來(lái)越的網(wǎng)絡(luò )應用)

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 61 次瀏覽 ? 2022-01-01 01:15 ? 來(lái)自相關(guān)話(huà)題

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(如何把這種方法應用在組織學(xué)習中成為越來(lái)越的網(wǎng)絡(luò )應用)
  毫無(wú)疑問(wèn),微博已經(jīng)成為越來(lái)越流行的網(wǎng)絡(luò )應用程序。如何將這種方法應用到組織學(xué)習中,使其成為一種非正式的學(xué)習方式,是很多培訓管理者思考的問(wèn)題。
  以新浪微博為例,企業(yè)學(xué)習推廣的方式大致可以分為兩種:一是直接應用模式,即直接使用新浪微博輔助培訓業(yè)務(wù),這是初級應用階段二、內部 實(shí)施模式是在企業(yè)內部部署一套專(zhuān)屬的企業(yè)微博,并在此基礎上開(kāi)始組織內部的社會(huì )化學(xué)習。這個(gè)模型比較復雜,但意義深遠。是微博推廣企業(yè)學(xué)習的高級階段。本文將詳細介紹這兩種模式的應用方法、內容和要點(diǎn)。
  
  
  直接申請模式
  直接應用模式的目標是通過(guò)微博輔助傳統培訓業(yè)務(wù)。培訓部可以通過(guò)建立培訓部微博賬號、協(xié)助培訓項目、推廣企業(yè)e-Learning等方式,達到直接申請模式的效果。
  創(chuàng )建微博賬號的培訓部門(mén)是機構的內部服務(wù)部門(mén)。一般來(lái)說(shuō),企業(yè)的培訓部門(mén)沒(méi)有自己的網(wǎng)站,缺乏與員工的溝通。因此,培訓部自己的微博的創(chuàng )建可以作為在線(xiàn)服務(wù)窗口。銀聯(lián)培訓中心、用友大學(xué)、吉利大學(xué)等企業(yè)培訓中心或企業(yè)大學(xué)均建立了自己的微博賬號。
  創(chuàng )建微博賬號非常簡(jiǎn)單,只需在新浪微博上申請即可。需要注意的是,最好申請新浪代理認證。認證通過(guò)后,可以使用的微博功能將更多,包括:展示培訓中心的視頻或圖片,專(zhuān)門(mén)設置咨詢(xún)、留言、表?yè)P和意見(jiàn)窗口,展示培訓團隊成員的風(fēng)采。
  多功能輔助培訓項目擁有專(zhuān)屬微博賬號后,培訓中心可深度應用各種微博功能,輔助傳統面授培訓項目。新浪微博匯聚了上千款功能應用,其中不少可以輔助面授培訓。我們列出了一些可以輔助訓練的最常見(jiàn)的微博功能。
  微博大屏 “微博大屏”更適合參與人數較多的培訓項目,其價(jià)值在于能夠激活培訓現場(chǎng)的互動(dòng)氛圍。在培訓過(guò)程中,可以使用獨立投影將微博大屏幕的內容投影到培訓現場(chǎng)。講師可以通過(guò)大屏幕采集學(xué)員的意見(jiàn),學(xué)員可以通過(guò)手機微博參與培訓和互動(dòng)過(guò)程。有關(guān)示例,請參見(jiàn)圖 1。
  微活動(dòng)“微活動(dòng)”是一個(gè)非常好的培訓營(yíng)銷(xiāo)工具,適合在培訓項目的前期招收學(xué)員。如果學(xué)員的微博滲透率高,可以通過(guò)“微活動(dòng)”的形式開(kāi)展培訓項目。在“微活動(dòng)”中,可以設置獎品、目標粉絲等功能,配合粉絲轉發(fā),起到培訓營(yíng)銷(xiāo)的作用(見(jiàn)圖表2).
  微群微群可以設置和邀請固定成員加入,類(lèi)似QQ群的功能(見(jiàn)圖3),適合輔助期長(cháng)的培訓項目。講師或培訓經(jīng)理可以通過(guò)微群發(fā)布通知,< @文章、上傳附件等,也可以要求學(xué)員在微群討論問(wèn)題或提交作業(yè)。培訓項目結束后,微群可以解散或保留,成為積累培訓資源的平臺。
  促進(jìn)企業(yè)電子學(xué)習。一般來(lái)說(shuō),企業(yè)在線(xiàn)學(xué)習側重于自主學(xué)習,學(xué)習者之間缺乏互動(dòng)。雖然有的公司在學(xué)習平臺開(kāi)設了BBS討論區,但在大多數情況下,人氣并不旺。培訓管理者可以考慮將微博與在線(xiàn)學(xué)習相結合,通過(guò)微博代碼嵌入等功能增強在線(xiàn)學(xué)習的互動(dòng)性。具體可以通過(guò)以下方式實(shí)現。
  加強在線(xiàn)課程的互動(dòng)活動(dòng)。在微博上發(fā)布與在線(xiàn)課程話(huà)題相關(guān)的微博,引發(fā)學(xué)習者對內容的討論,并將討論地址鏈接到課程介紹等明顯位置。本質(zhì)是每門(mén)課程為在線(xiàn)課程創(chuàng )建一個(gè)微博討論區。建立方式有兩種:一是培訓管理員可以在發(fā)布課程時(shí)同時(shí)創(chuàng )建微博并設置課程鏈接;二、直接在課件中嵌入微博討論區的永久鏈接,讓學(xué)習者在學(xué)習課件時(shí)可以隨時(shí)進(jìn)入微博參與互動(dòng)。
  聚合在線(xiàn)學(xué)習和網(wǎng)絡(luò )資源。通過(guò)微博的關(guān)鍵詞聚合功能,可以將課件的內容與微博平臺的內容關(guān)聯(lián)起來(lái)。在海量的微博內容中,所有與網(wǎng)絡(luò )課程相關(guān)的微博內容都可以被提取出來(lái)并按時(shí)間順序展示在網(wǎng)絡(luò )課件的指定位置(見(jiàn)圖表4)。內容聚合可以讓互動(dòng)更深入, 將學(xué)習交流不僅擴展到在線(xiàn)課程的學(xué)習者,也擴展到所有微博成員。
  推廣和評估在線(xiàn)課程。微博也可以用于在線(xiàn)課程的營(yíng)銷(xiāo)推廣和評價(jià),實(shí)施方法比較簡(jiǎn)單。例如,在課程開(kāi)始或結束時(shí),您可以添加“微博轉發(fā)”功能,將課程的介紹、鏈接和簡(jiǎn)要評價(jià)轉發(fā)到學(xué)習者的微博,學(xué)習者的粉絲會(huì )第一時(shí)間看到課程介紹和鏈接。為了擴大影響力,管理者還可以加入除新浪微博以外的其他社交網(wǎng)絡(luò )的分享鏈接。
  內部實(shí)施模式 所謂內部實(shí)施模式,就是在公司內部建立一個(gè)獨立完整的微博系統。企業(yè)可以在內部微博系統中建立自己的規則,比如添加V認證,風(fēng)格設計,與企業(yè)的學(xué)習系統或其他信息系統有更深層次的融合。
  在企業(yè)內部建立微博的目的,不僅可以輔助傳統的培訓業(yè)務(wù),還可以利用微博的實(shí)施和應用在企業(yè)內部進(jìn)行社交學(xué)習,使微博成為員工分享和學(xué)習的新平臺。
  新浪微博提供了一個(gè)免費的企業(yè)微博下載版——Xweibo,企業(yè)可以?xún)炔堪惭b使用。企業(yè)版微博(Xweibo)雖然不具備新浪微博的綜合功能,但具備微博發(fā)布、瀏覽、轉發(fā)、評論、采集、話(huà)題等基本功能,并且X微博的功能也在不斷升級完善本文以X微博系統為例,介紹如何在企業(yè)內部實(shí)現部署和應用。
  下載安裝Xweibo的下載地址為,下載安裝頁(yè)面見(jiàn)圖5。安裝時(shí)需要配合技術(shù)部門(mén),做好前期溝通和準備工作。技術(shù)人員按照下載包中的說(shuō)明在企業(yè)內網(wǎng)完成安裝后,需要進(jìn)行初始化工作,主要包括以下幾個(gè)方面。
  ·設置公司微博名稱(chēng)和·設置公司微博與新浪微博的關(guān)系·微博頁(yè)面布局設計·內容規則建立可直接應用。但為了達到更好的效果,通常會(huì )與企業(yè)的其他業(yè)務(wù)系統進(jìn)行集成。特別是與學(xué)習管理系統和公司現有的BBS論壇系統深度融合,更方便員工使用。微博提供了一些內置的系統集成工具,企業(yè)可以使用這些工具進(jìn)行簡(jiǎn)單的集成。
  1. 定義首頁(yè)鏈接功能:您可以通過(guò)該功能將相關(guān)學(xué)習系統的鏈接集成到微博首頁(yè)。
  2.外部論壇插件功能:通過(guò)此功能,Xweibo可以與公司內部BBS論壇同步登錄和更新。
  3.外呼工具功能:可以將“轉發(fā)碼”和“異地呼叫碼”嵌入學(xué)習管理系統、博客、郵箱、OA等系統中,讓微博內容可以以各種方式改變。表單在其他系統中顯示。
  如果企業(yè)需要更深度的整合,增加個(gè)性化的功能,開(kāi)發(fā)者需要在X微博上進(jìn)行高級二次開(kāi)發(fā)。
  只有大規模應用才能推廣和應用社交學(xué)習的力量。培訓經(jīng)理可以根據業(yè)務(wù)需要制定推廣應用策略和計劃。通過(guò)企業(yè)微博的實(shí)施,促進(jìn)社會(huì )學(xué)習,必須調動(dòng)員工的參與度和積極性。根據X微博的特點(diǎn),企業(yè)可以建立以下三種機制,打開(kāi)快速應用的局面。
  X微博與新浪微博互聯(lián)互通機制,所有擁有新浪微博賬號的員工均可與X微博同步數據。除了微博內容,“粉絲”也可以統一?;ヂ?lián)機制可以降低微博使用難度,簡(jiǎn)化申請流程。但需要注意的是,有些公司不希望員工發(fā)布的某些內容同步到互聯(lián)網(wǎng)上,公司可以通過(guò)技術(shù)和系統對其進(jìn)行限制。
  認證機制在企業(yè)內部開(kāi)展“微博加V認證”,培訓管理者可以通過(guò)這種方式提高員工參與度。 Xweibo的認證可以分類(lèi),例如可以分為技術(shù)專(zhuān)家、內部講師、工作專(zhuān)業(yè)人士等不同類(lèi)別(見(jiàn)圖表6)。同時(shí),它還可以與“名人管理”合作” 功能控制各類(lèi)內部組織。有效管理高級和專(zhuān)業(yè)群體。Xweibo認證機制也是發(fā)現和梳理內部專(zhuān)家的最佳途徑之一,將為企業(yè)知識的實(shí)施提供有效的支持和幫助管理。
  活動(dòng)機制 在企業(yè)內部微博上開(kāi)展各種活動(dòng),增加微博的知名度和活躍氣氛。微博內置了兩個(gè)活動(dòng)功能模塊:一個(gè)是“在線(xiàn)直播”,主要輔助企業(yè)的大型活動(dòng),以及微博平臺上活動(dòng)狀態(tài)的文字直播。同時(shí),活動(dòng)現場(chǎng)可以與微博參與者互動(dòng);另一個(gè)是“在線(xiàn)訪(fǎng)談”與新浪微博的“微訪(fǎng)談”功能基本一致,管理者可以通過(guò)該功能設計和安排在線(xiàn)脫口秀,員工可以通過(guò)微博實(shí)時(shí)觀(guān)看和參與互動(dòng)。
  此外,培訓經(jīng)理可以考慮將日常工作和各種活動(dòng)與企業(yè)微博相結合。例如,企業(yè)微博在培訓項目的設計、實(shí)施、管理和評估中具有價(jià)值。內部微博在輔助培訓和員工學(xué)習中的應用只是一個(gè)開(kāi)始。作為企業(yè)內部的社交軟件,它將成為員工之間溝通與協(xié)作的重要工具。 查看全部

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(如何把這種方法應用在組織學(xué)習中成為越來(lái)越的網(wǎng)絡(luò )應用)
  毫無(wú)疑問(wèn),微博已經(jīng)成為越來(lái)越流行的網(wǎng)絡(luò )應用程序。如何將這種方法應用到組織學(xué)習中,使其成為一種非正式的學(xué)習方式,是很多培訓管理者思考的問(wèn)題。
  以新浪微博為例,企業(yè)學(xué)習推廣的方式大致可以分為兩種:一是直接應用模式,即直接使用新浪微博輔助培訓業(yè)務(wù),這是初級應用階段二、內部 實(shí)施模式是在企業(yè)內部部署一套專(zhuān)屬的企業(yè)微博,并在此基礎上開(kāi)始組織內部的社會(huì )化學(xué)習。這個(gè)模型比較復雜,但意義深遠。是微博推廣企業(yè)學(xué)習的高級階段。本文將詳細介紹這兩種模式的應用方法、內容和要點(diǎn)。
  
  
  直接申請模式
  直接應用模式的目標是通過(guò)微博輔助傳統培訓業(yè)務(wù)。培訓部可以通過(guò)建立培訓部微博賬號、協(xié)助培訓項目、推廣企業(yè)e-Learning等方式,達到直接申請模式的效果。
  創(chuàng )建微博賬號的培訓部門(mén)是機構的內部服務(wù)部門(mén)。一般來(lái)說(shuō),企業(yè)的培訓部門(mén)沒(méi)有自己的網(wǎng)站,缺乏與員工的溝通。因此,培訓部自己的微博的創(chuàng )建可以作為在線(xiàn)服務(wù)窗口。銀聯(lián)培訓中心、用友大學(xué)、吉利大學(xué)等企業(yè)培訓中心或企業(yè)大學(xué)均建立了自己的微博賬號。
  創(chuàng )建微博賬號非常簡(jiǎn)單,只需在新浪微博上申請即可。需要注意的是,最好申請新浪代理認證。認證通過(guò)后,可以使用的微博功能將更多,包括:展示培訓中心的視頻或圖片,專(zhuān)門(mén)設置咨詢(xún)、留言、表?yè)P和意見(jiàn)窗口,展示培訓團隊成員的風(fēng)采。
  多功能輔助培訓項目擁有專(zhuān)屬微博賬號后,培訓中心可深度應用各種微博功能,輔助傳統面授培訓項目。新浪微博匯聚了上千款功能應用,其中不少可以輔助面授培訓。我們列出了一些可以輔助訓練的最常見(jiàn)的微博功能。
  微博大屏 “微博大屏”更適合參與人數較多的培訓項目,其價(jià)值在于能夠激活培訓現場(chǎng)的互動(dòng)氛圍。在培訓過(guò)程中,可以使用獨立投影將微博大屏幕的內容投影到培訓現場(chǎng)。講師可以通過(guò)大屏幕采集學(xué)員的意見(jiàn),學(xué)員可以通過(guò)手機微博參與培訓和互動(dòng)過(guò)程。有關(guān)示例,請參見(jiàn)圖 1。
  微活動(dòng)“微活動(dòng)”是一個(gè)非常好的培訓營(yíng)銷(xiāo)工具,適合在培訓項目的前期招收學(xué)員。如果學(xué)員的微博滲透率高,可以通過(guò)“微活動(dòng)”的形式開(kāi)展培訓項目。在“微活動(dòng)”中,可以設置獎品、目標粉絲等功能,配合粉絲轉發(fā),起到培訓營(yíng)銷(xiāo)的作用(見(jiàn)圖表2).
  微群微群可以設置和邀請固定成員加入,類(lèi)似QQ群的功能(見(jiàn)圖3),適合輔助期長(cháng)的培訓項目。講師或培訓經(jīng)理可以通過(guò)微群發(fā)布通知,< @文章、上傳附件等,也可以要求學(xué)員在微群討論問(wèn)題或提交作業(yè)。培訓項目結束后,微群可以解散或保留,成為積累培訓資源的平臺。
  促進(jìn)企業(yè)電子學(xué)習。一般來(lái)說(shuō),企業(yè)在線(xiàn)學(xué)習側重于自主學(xué)習,學(xué)習者之間缺乏互動(dòng)。雖然有的公司在學(xué)習平臺開(kāi)設了BBS討論區,但在大多數情況下,人氣并不旺。培訓管理者可以考慮將微博與在線(xiàn)學(xué)習相結合,通過(guò)微博代碼嵌入等功能增強在線(xiàn)學(xué)習的互動(dòng)性。具體可以通過(guò)以下方式實(shí)現。
  加強在線(xiàn)課程的互動(dòng)活動(dòng)。在微博上發(fā)布與在線(xiàn)課程話(huà)題相關(guān)的微博,引發(fā)學(xué)習者對內容的討論,并將討論地址鏈接到課程介紹等明顯位置。本質(zhì)是每門(mén)課程為在線(xiàn)課程創(chuàng )建一個(gè)微博討論區。建立方式有兩種:一是培訓管理員可以在發(fā)布課程時(shí)同時(shí)創(chuàng )建微博并設置課程鏈接;二、直接在課件中嵌入微博討論區的永久鏈接,讓學(xué)習者在學(xué)習課件時(shí)可以隨時(shí)進(jìn)入微博參與互動(dòng)。
  聚合在線(xiàn)學(xué)習和網(wǎng)絡(luò )資源。通過(guò)微博的關(guān)鍵詞聚合功能,可以將課件的內容與微博平臺的內容關(guān)聯(lián)起來(lái)。在海量的微博內容中,所有與網(wǎng)絡(luò )課程相關(guān)的微博內容都可以被提取出來(lái)并按時(shí)間順序展示在網(wǎng)絡(luò )課件的指定位置(見(jiàn)圖表4)。內容聚合可以讓互動(dòng)更深入, 將學(xué)習交流不僅擴展到在線(xiàn)課程的學(xué)習者,也擴展到所有微博成員。
  推廣和評估在線(xiàn)課程。微博也可以用于在線(xiàn)課程的營(yíng)銷(xiāo)推廣和評價(jià),實(shí)施方法比較簡(jiǎn)單。例如,在課程開(kāi)始或結束時(shí),您可以添加“微博轉發(fā)”功能,將課程的介紹、鏈接和簡(jiǎn)要評價(jià)轉發(fā)到學(xué)習者的微博,學(xué)習者的粉絲會(huì )第一時(shí)間看到課程介紹和鏈接。為了擴大影響力,管理者還可以加入除新浪微博以外的其他社交網(wǎng)絡(luò )的分享鏈接。
  內部實(shí)施模式 所謂內部實(shí)施模式,就是在公司內部建立一個(gè)獨立完整的微博系統。企業(yè)可以在內部微博系統中建立自己的規則,比如添加V認證,風(fēng)格設計,與企業(yè)的學(xué)習系統或其他信息系統有更深層次的融合。
  在企業(yè)內部建立微博的目的,不僅可以輔助傳統的培訓業(yè)務(wù),還可以利用微博的實(shí)施和應用在企業(yè)內部進(jìn)行社交學(xué)習,使微博成為員工分享和學(xué)習的新平臺。
  新浪微博提供了一個(gè)免費的企業(yè)微博下載版——Xweibo,企業(yè)可以?xún)炔堪惭b使用。企業(yè)版微博(Xweibo)雖然不具備新浪微博的綜合功能,但具備微博發(fā)布、瀏覽、轉發(fā)、評論、采集、話(huà)題等基本功能,并且X微博的功能也在不斷升級完善本文以X微博系統為例,介紹如何在企業(yè)內部實(shí)現部署和應用。
  下載安裝Xweibo的下載地址為,下載安裝頁(yè)面見(jiàn)圖5。安裝時(shí)需要配合技術(shù)部門(mén),做好前期溝通和準備工作。技術(shù)人員按照下載包中的說(shuō)明在企業(yè)內網(wǎng)完成安裝后,需要進(jìn)行初始化工作,主要包括以下幾個(gè)方面。
  ·設置公司微博名稱(chēng)和·設置公司微博與新浪微博的關(guān)系·微博頁(yè)面布局設計·內容規則建立可直接應用。但為了達到更好的效果,通常會(huì )與企業(yè)的其他業(yè)務(wù)系統進(jìn)行集成。特別是與學(xué)習管理系統和公司現有的BBS論壇系統深度融合,更方便員工使用。微博提供了一些內置的系統集成工具,企業(yè)可以使用這些工具進(jìn)行簡(jiǎn)單的集成。
  1. 定義首頁(yè)鏈接功能:您可以通過(guò)該功能將相關(guān)學(xué)習系統的鏈接集成到微博首頁(yè)。
  2.外部論壇插件功能:通過(guò)此功能,Xweibo可以與公司內部BBS論壇同步登錄和更新。
  3.外呼工具功能:可以將“轉發(fā)碼”和“異地呼叫碼”嵌入學(xué)習管理系統、博客、郵箱、OA等系統中,讓微博內容可以以各種方式改變。表單在其他系統中顯示。
  如果企業(yè)需要更深度的整合,增加個(gè)性化的功能,開(kāi)發(fā)者需要在X微博上進(jìn)行高級二次開(kāi)發(fā)。
  只有大規模應用才能推廣和應用社交學(xué)習的力量。培訓經(jīng)理可以根據業(yè)務(wù)需要制定推廣應用策略和計劃。通過(guò)企業(yè)微博的實(shí)施,促進(jìn)社會(huì )學(xué)習,必須調動(dòng)員工的參與度和積極性。根據X微博的特點(diǎn),企業(yè)可以建立以下三種機制,打開(kāi)快速應用的局面。
  X微博與新浪微博互聯(lián)互通機制,所有擁有新浪微博賬號的員工均可與X微博同步數據。除了微博內容,“粉絲”也可以統一?;ヂ?lián)機制可以降低微博使用難度,簡(jiǎn)化申請流程。但需要注意的是,有些公司不希望員工發(fā)布的某些內容同步到互聯(lián)網(wǎng)上,公司可以通過(guò)技術(shù)和系統對其進(jìn)行限制。
  認證機制在企業(yè)內部開(kāi)展“微博加V認證”,培訓管理者可以通過(guò)這種方式提高員工參與度。 Xweibo的認證可以分類(lèi),例如可以分為技術(shù)專(zhuān)家、內部講師、工作專(zhuān)業(yè)人士等不同類(lèi)別(見(jiàn)圖表6)。同時(shí),它還可以與“名人管理”合作” 功能控制各類(lèi)內部組織。有效管理高級和專(zhuān)業(yè)群體。Xweibo認證機制也是發(fā)現和梳理內部專(zhuān)家的最佳途徑之一,將為企業(yè)知識的實(shí)施提供有效的支持和幫助管理。
  活動(dòng)機制 在企業(yè)內部微博上開(kāi)展各種活動(dòng),增加微博的知名度和活躍氣氛。微博內置了兩個(gè)活動(dòng)功能模塊:一個(gè)是“在線(xiàn)直播”,主要輔助企業(yè)的大型活動(dòng),以及微博平臺上活動(dòng)狀態(tài)的文字直播。同時(shí),活動(dòng)現場(chǎng)可以與微博參與者互動(dòng);另一個(gè)是“在線(xiàn)訪(fǎng)談”與新浪微博的“微訪(fǎng)談”功能基本一致,管理者可以通過(guò)該功能設計和安排在線(xiàn)脫口秀,員工可以通過(guò)微博實(shí)時(shí)觀(guān)看和參與互動(dòng)。
  此外,培訓經(jīng)理可以考慮將日常工作和各種活動(dòng)與企業(yè)微博相結合。例如,企業(yè)微博在培訓項目的設計、實(shí)施、管理和評估中具有價(jià)值。內部微博在輔助培訓和員工學(xué)習中的應用只是一個(gè)開(kāi)始。作為企業(yè)內部的社交軟件,它將成為員工之間溝通與協(xié)作的重要工具。

使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(這是第一篇:關(guān)于uploadAPI的OAuth驗證失敗問(wèn)題(組圖))

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 57 次瀏覽 ? 2021-12-31 23:32 ? 來(lái)自相關(guān)話(huà)題

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(這是第一篇:關(guān)于uploadAPI的OAuth驗證失敗問(wèn)題(組圖))
  新浪微博很受歡迎,開(kāi)放平臺很受歡迎,開(kāi)發(fā)者很受歡迎。
  開(kāi)發(fā)者受歡迎是因為新浪微博開(kāi)放平臺對開(kāi)發(fā)者非常不友好,其API從實(shí)現到文檔都很粗糙。
  API 實(shí)現不規范,可以容忍,但是文檔沒(méi)有解釋清楚,開(kāi)發(fā)者自己探索是很離譜的。新浪似乎還沒(méi)有來(lái)得及照顧第三方開(kāi)發(fā)者,開(kāi)放平臺現在只是“開(kāi)門(mén)見(jiàn)山”。結果就是開(kāi)發(fā)者折騰了很多沒(méi)有意義的東西,浪費時(shí)間!
  我寫(xiě)這一系列文章的目的是為了避免后來(lái)者犯同樣的罪。
  這是上傳AP??I OAuth認證失敗的第一篇。去論壇搜索上傳就知道有多少人受苦了。
  Upload API 的 OAuth 之所以難,部分是因為它的 HTTP 請求格式的特殊性,主要是因為新浪微博的實(shí)現令人難以置信。
  Upload API 的特殊性在于它的請求“使用多部分/表單數據編碼提交”。根據OAuth1.0協(xié)議,Content-Type為multipart/form-data的HTTP請求的entity body不參與OAuth簽名。因此,上傳API的OAuth應該比其他普通API簡(jiǎn)單,因為簽名只涉及OAuth參數(以oauth_開(kāi)頭的一系列特殊參數)。因此,標準的簽名基字符串應該是:
  POSThttp%3A%2F %% 2Fstatuses%2Fupload.jsonoauth_consumer_key%3Dxxxxxxxxxx%26oauth_nonce%3D798014939%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1312912324%26oauth_version%3D1312912324%26oauth_version%3D1312912324%26oauth_ytoken0
  對應的標準授權頭應該是:
  OAuth oauth_consumer_key=xxxxxxxxxx、oauth_token=yyyyyyyyyy、oauth_signature_method=HMAC-SHA1、oauth_version=1.0、oauth_nonce=798014939、oauth_nonce=798014939、oauth_nonce=798014939、oauth_nonce=798014939、oauth33331231時(shí)間oauth_signature_method=HMAC-SHA1
  但是,您會(huì )收到:
  40107:Oauth 錯誤:signature_invalid!
  這是因為新浪微博上傳API的實(shí)現需要簽名基串收錄pic以外的參數。所以新浪微博需要的Signature Base String是這樣的:
  POSThttp%3A%2F%%2Fstatuses%2Fupload.jsonlat%3D37.78711200%26long%3D-122.40846000%26oauth_consumer_key%3Dxxxxxxxxxx%26oauth%258oth%258oth%26588oth%268588888888888885 _signature_method3 26oauth_timestamp%3D1312912886%26oauth_token%3Dyyyyyyyyyy%26oauth_version%3D1.0%26status%3DPic
  問(wèn)題出在這里:status、lat、long參數是在entity body中提交的。如前所述,它們不參與 OAuth 簽名。為了符合 OAuth 協(xié)議,必須將這些參數添加到 URL 查詢(xún)字符串或 Authorization 標頭中。
  規范的開(kāi)發(fā)者這樣做了,結果“錯了”。新浪微博服務(wù)器依舊返回:
  40107:Oauth 錯誤:signature_invalid!
  其實(shí)不管怎么折騰,只要遵循OAuth協(xié)議,肯定是甩不掉的,因為新浪微博不遵循OAuth協(xié)議。
  對于 Content-Type 為 multipart/form-data 的 HTTP 請求,新浪微博要求非二進(jìn)制參數(如上傳 API 中的 pic 參數)參與 OAuth 簽名,并且還要求這些參數是“非原創(chuàng )的” ”。換句話(huà)說(shuō),Signature Base String 必須收錄這些參數,但這些參數不能出現在 URL 查詢(xún)字符串或 Authorization 標頭中。這意味著(zhù)新浪微博服務(wù)器收到請求后,會(huì )從實(shí)體主體中提取這些參數進(jìn)行OAuth簽名驗證。再一次,對于 Content-Type 是 multipart/form-data 的 HTTP 請求,這違反了 OAuth 協(xié)議。但是在新浪微博上,我們必須違反OAuth協(xié)議才能通過(guò)OAuth驗證。
  即使你不考慮像我這樣費時(shí)費力的探索過(guò)程,新浪微博的非標準實(shí)現也給開(kāi)發(fā)者帶來(lái)了很多麻煩,因為它導致了很多OAuth庫的追隨OAuth 協(xié)議無(wú)法直接使用。
  在折騰的過(guò)程中,我還發(fā)現了另一個(gè)可怕的bug。如果pic的Content-Disposition頭部缺少filename參數,新浪微博也會(huì )返回“40107:Oauth Error:signature_invalid!”,雖然pic和OAuth沒(méi)有關(guān)系,雖然按照標準是不需要filename的,但實(shí)際上文件名在此處沒(méi)用。
  最后總結一下獲取新浪微博上傳API的“正確”方式:
  所有參數均以 multipart/form-data 格式提交,不能出現在 URL 查詢(xún)字符串或 Authorization 標頭中。除 pic 外的所有參數都輸入 Signature Base String 以參與 OAuth 簽名。 pic 的 Content-Disposition 頭必須收錄 filename 參數。
  官方論壇幫助不大,哭了很多,但是省的少。未做UTF-8編碼或URL編碼導致OAuth認證失敗是開(kāi)發(fā)者自身的錯。本文也適用于其他使用 multipart/form-data 編碼提交 HTTP 請求的 API,例如 update_profile_image。
  轉載原文 查看全部

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(這是第一篇:關(guān)于uploadAPI的OAuth驗證失敗問(wèn)題(組圖))
  新浪微博很受歡迎,開(kāi)放平臺很受歡迎,開(kāi)發(fā)者很受歡迎。
  開(kāi)發(fā)者受歡迎是因為新浪微博開(kāi)放平臺對開(kāi)發(fā)者非常不友好,其API從實(shí)現到文檔都很粗糙。
  API 實(shí)現不規范,可以容忍,但是文檔沒(méi)有解釋清楚,開(kāi)發(fā)者自己探索是很離譜的。新浪似乎還沒(méi)有來(lái)得及照顧第三方開(kāi)發(fā)者,開(kāi)放平臺現在只是“開(kāi)門(mén)見(jiàn)山”。結果就是開(kāi)發(fā)者折騰了很多沒(méi)有意義的東西,浪費時(shí)間!
  我寫(xiě)這一系列文章的目的是為了避免后來(lái)者犯同樣的罪。
  這是上傳AP??I OAuth認證失敗的第一篇。去論壇搜索上傳就知道有多少人受苦了。
  Upload API 的 OAuth 之所以難,部分是因為它的 HTTP 請求格式的特殊性,主要是因為新浪微博的實(shí)現令人難以置信。
  Upload API 的特殊性在于它的請求“使用多部分/表單數據編碼提交”。根據OAuth1.0協(xié)議,Content-Type為multipart/form-data的HTTP請求的entity body不參與OAuth簽名。因此,上傳API的OAuth應該比其他普通API簡(jiǎn)單,因為簽名只涉及OAuth參數(以oauth_開(kāi)頭的一系列特殊參數)。因此,標準的簽名基字符串應該是:
  POSThttp%3A%2F %% 2Fstatuses%2Fupload.jsonoauth_consumer_key%3Dxxxxxxxxxx%26oauth_nonce%3D798014939%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1312912324%26oauth_version%3D1312912324%26oauth_version%3D1312912324%26oauth_ytoken0
  對應的標準授權頭應該是:
  OAuth oauth_consumer_key=xxxxxxxxxx、oauth_token=yyyyyyyyyy、oauth_signature_method=HMAC-SHA1、oauth_version=1.0、oauth_nonce=798014939、oauth_nonce=798014939、oauth_nonce=798014939、oauth_nonce=798014939、oauth33331231時(shí)間oauth_signature_method=HMAC-SHA1
  但是,您會(huì )收到:
  40107:Oauth 錯誤:signature_invalid!
  這是因為新浪微博上傳API的實(shí)現需要簽名基串收錄pic以外的參數。所以新浪微博需要的Signature Base String是這樣的:
  POSThttp%3A%2F%%2Fstatuses%2Fupload.jsonlat%3D37.78711200%26long%3D-122.40846000%26oauth_consumer_key%3Dxxxxxxxxxx%26oauth%258oth%258oth%26588oth%268588888888888885 _signature_method3 26oauth_timestamp%3D1312912886%26oauth_token%3Dyyyyyyyyyy%26oauth_version%3D1.0%26status%3DPic
  問(wèn)題出在這里:status、lat、long參數是在entity body中提交的。如前所述,它們不參與 OAuth 簽名。為了符合 OAuth 協(xié)議,必須將這些參數添加到 URL 查詢(xún)字符串或 Authorization 標頭中。
  規范的開(kāi)發(fā)者這樣做了,結果“錯了”。新浪微博服務(wù)器依舊返回:
  40107:Oauth 錯誤:signature_invalid!
  其實(shí)不管怎么折騰,只要遵循OAuth協(xié)議,肯定是甩不掉的,因為新浪微博不遵循OAuth協(xié)議。
  對于 Content-Type 為 multipart/form-data 的 HTTP 請求,新浪微博要求非二進(jìn)制參數(如上傳 API 中的 pic 參數)參與 OAuth 簽名,并且還要求這些參數是“非原創(chuàng )的” ”。換句話(huà)說(shuō),Signature Base String 必須收錄這些參數,但這些參數不能出現在 URL 查詢(xún)字符串或 Authorization 標頭中。這意味著(zhù)新浪微博服務(wù)器收到請求后,會(huì )從實(shí)體主體中提取這些參數進(jìn)行OAuth簽名驗證。再一次,對于 Content-Type 是 multipart/form-data 的 HTTP 請求,這違反了 OAuth 協(xié)議。但是在新浪微博上,我們必須違反OAuth協(xié)議才能通過(guò)OAuth驗證。
  即使你不考慮像我這樣費時(shí)費力的探索過(guò)程,新浪微博的非標準實(shí)現也給開(kāi)發(fā)者帶來(lái)了很多麻煩,因為它導致了很多OAuth庫的追隨OAuth 協(xié)議無(wú)法直接使用。
  在折騰的過(guò)程中,我還發(fā)現了另一個(gè)可怕的bug。如果pic的Content-Disposition頭部缺少filename參數,新浪微博也會(huì )返回“40107:Oauth Error:signature_invalid!”,雖然pic和OAuth沒(méi)有關(guān)系,雖然按照標準是不需要filename的,但實(shí)際上文件名在此處沒(méi)用。
  最后總結一下獲取新浪微博上傳API的“正確”方式:
  所有參數均以 multipart/form-data 格式提交,不能出現在 URL 查詢(xún)字符串或 Authorization 標頭中。除 pic 外的所有參數都輸入 Signature Base String 以參與 OAuth 簽名。 pic 的 Content-Disposition 頭必須收錄 filename 參數。
  官方論壇幫助不大,哭了很多,但是省的少。未做UTF-8編碼或URL編碼導致OAuth認證失敗是開(kāi)發(fā)者自身的錯。本文也適用于其他使用 multipart/form-data 編碼提交 HTTP 請求的 API,例如 update_profile_image。
  轉載原文

使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站( api訪(fǎng)問(wèn):2019-07-15本文章(圖))

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 53 次瀏覽 ? 2021-12-31 11:28 ? 來(lái)自相關(guān)話(huà)題

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(
api訪(fǎng)問(wèn):2019-07-15本文章(圖))
  Python訪(fǎng)問(wèn)微博第三方API 2 訪(fǎng)問(wèn)用戶(hù)登錄和微博發(fā)布
  時(shí)間:2019-07-15
  本文章為大家介紹python訪(fǎng)問(wèn)微博第三方API 2訪(fǎng)問(wèn)用戶(hù)登錄和微博發(fā)布,主要包括python訪(fǎng)問(wèn)微博第三方API 2訪(fǎng)問(wèn)用戶(hù)登錄和微博發(fā)布使用示例、應用技巧、基礎總結知識點(diǎn)和注意事項,有一定的參考價(jià)值,有需要的朋友可以參考。
  Python訪(fǎng)問(wèn)微博第三方API 2 訪(fǎng)問(wèn)用戶(hù)登錄和微博發(fā)布
  # coding=utf-8
import requests
import json
import MySQLdb
from datetime import datetime
from flask import Flask, redirect, request
app = Flask(__name__)
# 全局變量token
token = {}
def get_ticket():
# App Key:13866668888 app key就是url中的 YOUR_CLIENT_ID
# YOUR_REGISTERED_REDIRECT_URI就是 http://test.chinasoft.com
client_id = 13866668888
redirect_url = "http://test.chinasoft.com/a"
url = 'https://api.weibo.com/oauth2/authorize?client_id={app_key}&response_type=code&redirect_uri={redirect_url}'.format(app_key = client_id, redirect_url = redirect_url)
return url
def get_token(code):
# App Secret:6dc11f2039
redirect_url = "http://test.chinasoft.com/a"
client_secret = "6dc11f2039"
client_id = 13866668888
url = "https://api.weibo.com/oauth2/a ... id%3D{client_id}&client_secret={client_secret}&grant_type=authorization_code&redirect_uri={redirect_url}&code={code}".format(client_id = client_id,client_secret = client_secret,redirect_url = redirect_url,code = code)
resp = requests.post(url)
global token
token = resp.json()
return token
def get_info(access_token, uid):
url = "https://api.weibo.com/2/users/show.json"
resp = requests.get(url, params = {
'access_token':access_token,
'uid':uid
})
return resp.json()
def get_conn():
""" 獲取mysql的連接"""
try:
conn = MySQLdb.connect(
host="localhost",
port=3306,
user="root",
password="root",
db="user_grade",
)
except MySQLdb.Error as e:
print("Error %d:%s" % (e.args[0], e.args[1]))
return conn
def weibo_share(access_token):
url = "https://api.weibo.com/2/statuses/share.json"
resp = requests.post(url, {
'access_token':access_token,
'status':'現在是北京時(shí)間:{0} http://test.chinasoft.com'.format(datetime.now())
})
return resp.json()
@app.route('/a')
def index():
code = request.args.get('code', None)
# 根據code獲取token
token = get_token(code)
# 獲取用戶(hù)信息
user_info = get_info(token['access_token'], token['uid'])
third_id = user_info['id']
nickname = user_info['screen_name']
headimg = user_info['profile_image_url']
# 獲取數據庫的連接,將用戶(hù)信息存入到數據庫中
# create table user(third_id int,nickname varchar(255),headimg varchar(1000));
conn = get_conn()
cur = conn.cursor()
# 注意 sql中的 values中的字段一定要加 單引號,否則會(huì )報錯
sql = "insert into user(third_id,nickname,headimg) values('{third_id}','{nickname}','{headimg}')".format(third_id = third_id,nickname = nickname,headimg = headimg)
cur.execute(sql)
conn.autocommit(True)
return json.dumps(user_info)
@app.route('/weibo')
def weibo():
ticket = get_ticket()
return redirect(ticket)
@app.route('/share')
def share():
ticket = get_ticket()
rest = weibo_share(token['access_token'])
return json.dumps(rest)
if __name__ == '__main__':
app.run(port=80, debug=True)
  登錄接口
  訪(fǎng)問(wèn)量:5000/微博
  獲取令牌 查看全部

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(
api訪(fǎng)問(wèn):2019-07-15本文章(圖))
  Python訪(fǎng)問(wèn)微博第三方API 2 訪(fǎng)問(wèn)用戶(hù)登錄和微博發(fā)布
  時(shí)間:2019-07-15
  本文章為大家介紹python訪(fǎng)問(wèn)微博第三方API 2訪(fǎng)問(wèn)用戶(hù)登錄和微博發(fā)布,主要包括python訪(fǎng)問(wèn)微博第三方API 2訪(fǎng)問(wèn)用戶(hù)登錄和微博發(fā)布使用示例、應用技巧、基礎總結知識點(diǎn)和注意事項,有一定的參考價(jià)值,有需要的朋友可以參考。
  Python訪(fǎng)問(wèn)微博第三方API 2 訪(fǎng)問(wèn)用戶(hù)登錄和微博發(fā)布
  # coding=utf-8
import requests
import json
import MySQLdb
from datetime import datetime
from flask import Flask, redirect, request
app = Flask(__name__)
# 全局變量token
token = {}
def get_ticket():
# App Key:13866668888 app key就是url中的 YOUR_CLIENT_ID
# YOUR_REGISTERED_REDIRECT_URI就是 http://test.chinasoft.com
client_id = 13866668888
redirect_url = "http://test.chinasoft.com/a"
url = 'https://api.weibo.com/oauth2/authorize?client_id={app_key}&response_type=code&redirect_uri={redirect_url}'.format(app_key = client_id, redirect_url = redirect_url)
return url
def get_token(code):
# App Secret:6dc11f2039
redirect_url = "http://test.chinasoft.com/a"
client_secret = "6dc11f2039"
client_id = 13866668888
url = "https://api.weibo.com/oauth2/a ... id%3D{client_id}&client_secret={client_secret}&grant_type=authorization_code&redirect_uri={redirect_url}&code={code}".format(client_id = client_id,client_secret = client_secret,redirect_url = redirect_url,code = code)
resp = requests.post(url)
global token
token = resp.json()
return token
def get_info(access_token, uid):
url = "https://api.weibo.com/2/users/show.json"
resp = requests.get(url, params = {
'access_token':access_token,
'uid':uid
})
return resp.json()
def get_conn():
""" 獲取mysql的連接"""
try:
conn = MySQLdb.connect(
host="localhost",
port=3306,
user="root",
password="root",
db="user_grade",
)
except MySQLdb.Error as e:
print("Error %d:%s" % (e.args[0], e.args[1]))
return conn
def weibo_share(access_token):
url = "https://api.weibo.com/2/statuses/share.json"
resp = requests.post(url, {
'access_token':access_token,
'status':'現在是北京時(shí)間:{0} http://test.chinasoft.com'.format(datetime.now())
})
return resp.json()
@app.route('/a')
def index():
code = request.args.get('code', None)
# 根據code獲取token
token = get_token(code)
# 獲取用戶(hù)信息
user_info = get_info(token['access_token'], token['uid'])
third_id = user_info['id']
nickname = user_info['screen_name']
headimg = user_info['profile_image_url']
# 獲取數據庫的連接,將用戶(hù)信息存入到數據庫中
# create table user(third_id int,nickname varchar(255),headimg varchar(1000));
conn = get_conn()
cur = conn.cursor()
# 注意 sql中的 values中的字段一定要加 單引號,否則會(huì )報錯
sql = "insert into user(third_id,nickname,headimg) values('{third_id}','{nickname}','{headimg}')".format(third_id = third_id,nickname = nickname,headimg = headimg)
cur.execute(sql)
conn.autocommit(True)
return json.dumps(user_info)
@app.route('/weibo')
def weibo():
ticket = get_ticket()
return redirect(ticket)
@app.route('/share')
def share():
ticket = get_ticket()
rest = weibo_share(token['access_token'])
return json.dumps(rest)
if __name__ == '__main__':
app.run(port=80, debug=True)
  登錄接口
  訪(fǎng)問(wèn)量:5000/微博
  獲取令牌

使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(文檔_V23.API錯誤代碼說(shuō)明()(圖))

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 61 次瀏覽 ? 2021-12-30 03:19 ? 來(lái)自相關(guān)話(huà)題

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(文檔_V23.API錯誤代碼說(shuō)明()(圖))
  文檔_V2
  3.API 錯誤碼描述地址:
  4.iOS SDK 地址:
  5.授權機制:
  授權機制說(shuō)明
  6.開(kāi)發(fā)者管理中心
  利用:
  在管理中心創(chuàng )建自己的應用后,會(huì )得到AppKey和App Secret
  這兩個(gè)值是初始化新浪微博SDK必須用到的兩個(gè)參數。
  執行登錄功能時(shí)可能遇到的錯誤如下
  1:訪(fǎng)問(wèn)錯誤提示
  
  表示:微博SDK初始化時(shí)設置的appRedirectURI和微博開(kāi)放平臺-開(kāi)發(fā)者管理中心-應用信息-高級信息-OAuth2.0 授權設置-授權回調頁(yè)面
  如果設定值不同,就會(huì )出現上述錯誤。
  
  
  2:調用新浪微博客戶(hù)端授權后,應用沒(méi)有正常返回。
  1:檢查URL類(lèi)型“URL方案”是否命名為:sinaweibosso。如圖添加AppID:
  
  2:在A(yíng)ppDelegate中是否實(shí)現了委托功能:
  -(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
NSLog(@"%@",url.scheme);
//如果涉及其他應用交互,請做如下判斷,例如:還可能和新浪微博進(jìn)行交互
if ([url.scheme isEqualToString:Key_weiXinAppID]) {
return [WXApi handleOpenURL:url delegate:self];
}else if ([url.scheme isEqualToString:[@"sinaweibosso" stringByAppendingPathExtension:Key_sinaWeiboAppID]])
{
return [[SinaWeiBoManage defaultInstance].sinaWeibo handleOpenURL:url];
}else
{
return YES;
}
}
  完成上述設置后,將無(wú)意外地響應授權結果。
  接下來(lái),我們主要開(kāi)始調用API與微博數據進(jìn)行交互。
  舉個(gè)簡(jiǎn)單的例子,如何獲取授權用戶(hù)的個(gè)人信息:
  NSMutableDictionary *params = [[NSMutableDictionary alloc] init];
[params setObject:userId forKey:@"uid"];
[sinaWeibo requestWithURL:@"users/show.json"
params:params
httpMethod:@"GET"
delegate:self];
  具體需要傳入的參數請參考官方API文檔。
  得到結果后,會(huì )響應委托成功或失?。?br />   這時(shí)候可以通過(guò)鏈接名來(lái)識別請求類(lèi)型:
  - (void)request:(SinaWeiboRequest *)request didFailWithError:(NSError *)error
{
//獲取關(guān)注列表
if ([request.url hasSuffix:@"friendships/friends.json"])
{
if ([delegate respondsToSelector:@selector(sinaWeiBoManage:withFriendListResult:withRequestDataType:isSuccess:)]) {
[delegate sinaWeiBoManage:self withFriendListResult:nil withRequestDataType:self.requestDataType isSuccess:NO];
}
}
}
  關(guān)于iOS 6內置微博功能:
  在iOS6中,蘋(píng)果集成了新浪微博的社交環(huán)境,所以如果用戶(hù)在設置界面對新浪微博賬號進(jìn)行了授權,就可以直接在我們的第三方應用中使用,用于發(fā)布微博等。
  先介紹兩個(gè)新框架
  他們是:
  Accounts.framework:用于在系統設置中獲取賬戶(hù)信息
  Social.framework:用于與第三方開(kāi)放平臺進(jìn)行數據交互。
  該過(guò)程分為兩個(gè)步驟:
  首先要知道用戶(hù)是否在系統設置中對相應的賬號進(jìn)行了授權。
  獲取到相應的賬號信息后,即可開(kāi)始與第三方開(kāi)放平臺進(jìn)行數據交互,代碼如下:
  // Create an account store object. 創(chuàng )建賬戶(hù)集合
ACAccountStore *accountStore = [[ACAccountStore alloc] init];
// Create an account type that ensures Twitter accounts are retrieved. 確定好 賬戶(hù)類(lèi)型 新浪微博 還是 Facebook 還是 Twitter
ACAccountType *accountType = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierSinaWeibo];
// Request access from the user to use their Twitter accounts. //異步請求 來(lái)得到對應類(lèi)型的賬戶(hù)信息
[accountStore requestAccessToAccountsWithType:accountType withCompletionHandler:^(BOOL granted, NSError *error) {
if(granted) {//如果 granted 返回 NO 表示一個(gè)賬戶(hù)都沒(méi)有設置
// Get the list of Twitter accounts.
NSArray *accountsArray = [accountStore accountsWithAccountType:accountType]; //可能存在多個(gè),看你要用哪個(gè),最好讓用戶(hù)選擇一下

// For the sake of brevity, we&#39;ll assume there is only one Twitter account present.
// You would ideally ask the user which account they want to tweet from, if there is more than one Twitter account present.
if ([accountsArray count] > 0) {
// Grab the initial Twitter account to tweet from.
ACAccount *sinaWeiboAccount = [accountsArray objectAtIndex:0];

NSMutableDictionary *params = [[NSMutableDictionary alloc] init];
[params setObject:@"一條新的微博" forKey:@"status"];
SLRequest *slRequest = [SLRequest requestForServiceType:SLServiceTypeSinaWeibo requestMethod:SLRequestMethodPOST URL:[NSURL URLWithString:@"https://open.weibo.cn/2/statuses/update.json"] parameters:params];
slRequest.account = sinaWeiboAccount;//這行代碼一定要賦值,負責數據交互一定失敗
[slRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
NSLog(@"%@ %@",urlResponse.URL,error);

NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingAllowFragments error:nil];
NSLog(@"%@",dic);
}];

}
}
}];
  獲得每個(gè) ACAccount 后,它就有了一個(gè)標識符。最好在用戶(hù)確認使用哪個(gè)賬號的時(shí)候保存,這樣下次可以直接通過(guò)下面的代碼獲取對應的賬號
  [accountStore accountWithIdentifier:sinaWeiboAccount.identifier];
  總結:
  SNS作為應用推廣的主要方式,必須認真研究。如何喚起和激發(fā)用戶(hù)的分享欲望,讓更多人知道你的應用,那么成功就在不遠處。 查看全部

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(文檔_V23.API錯誤代碼說(shuō)明()(圖))
  文檔_V2
  3.API 錯誤碼描述地址:
  4.iOS SDK 地址:
  5.授權機制:
  授權機制說(shuō)明
  6.開(kāi)發(fā)者管理中心
  利用:
  在管理中心創(chuàng )建自己的應用后,會(huì )得到AppKey和App Secret
  這兩個(gè)值是初始化新浪微博SDK必須用到的兩個(gè)參數。
  執行登錄功能時(shí)可能遇到的錯誤如下
  1:訪(fǎng)問(wèn)錯誤提示
  
  表示:微博SDK初始化時(shí)設置的appRedirectURI和微博開(kāi)放平臺-開(kāi)發(fā)者管理中心-應用信息-高級信息-OAuth2.0 授權設置-授權回調頁(yè)面
  如果設定值不同,就會(huì )出現上述錯誤。
  
  
  2:調用新浪微博客戶(hù)端授權后,應用沒(méi)有正常返回。
  1:檢查URL類(lèi)型“URL方案”是否命名為:sinaweibosso。如圖添加AppID:
  
  2:在A(yíng)ppDelegate中是否實(shí)現了委托功能:
  -(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
NSLog(@"%@",url.scheme);
//如果涉及其他應用交互,請做如下判斷,例如:還可能和新浪微博進(jìn)行交互
if ([url.scheme isEqualToString:Key_weiXinAppID]) {
return [WXApi handleOpenURL:url delegate:self];
}else if ([url.scheme isEqualToString:[@"sinaweibosso" stringByAppendingPathExtension:Key_sinaWeiboAppID]])
{
return [[SinaWeiBoManage defaultInstance].sinaWeibo handleOpenURL:url];
}else
{
return YES;
}
}
  完成上述設置后,將無(wú)意外地響應授權結果。
  接下來(lái),我們主要開(kāi)始調用API與微博數據進(jìn)行交互。
  舉個(gè)簡(jiǎn)單的例子,如何獲取授權用戶(hù)的個(gè)人信息:
  NSMutableDictionary *params = [[NSMutableDictionary alloc] init];
[params setObject:userId forKey:@"uid"];
[sinaWeibo requestWithURL:@"users/show.json"
params:params
httpMethod:@"GET"
delegate:self];
  具體需要傳入的參數請參考官方API文檔。
  得到結果后,會(huì )響應委托成功或失?。?br />   這時(shí)候可以通過(guò)鏈接名來(lái)識別請求類(lèi)型:
  - (void)request:(SinaWeiboRequest *)request didFailWithError:(NSError *)error
{
//獲取關(guān)注列表
if ([request.url hasSuffix:@"friendships/friends.json"])
{
if ([delegate respondsToSelector:@selector(sinaWeiBoManage:withFriendListResult:withRequestDataType:isSuccess:)]) {
[delegate sinaWeiBoManage:self withFriendListResult:nil withRequestDataType:self.requestDataType isSuccess:NO];
}
}
}
  關(guān)于iOS 6內置微博功能:
  在iOS6中,蘋(píng)果集成了新浪微博的社交環(huán)境,所以如果用戶(hù)在設置界面對新浪微博賬號進(jìn)行了授權,就可以直接在我們的第三方應用中使用,用于發(fā)布微博等。
  先介紹兩個(gè)新框架
  他們是:
  Accounts.framework:用于在系統設置中獲取賬戶(hù)信息
  Social.framework:用于與第三方開(kāi)放平臺進(jìn)行數據交互。
  該過(guò)程分為兩個(gè)步驟:
  首先要知道用戶(hù)是否在系統設置中對相應的賬號進(jìn)行了授權。
  獲取到相應的賬號信息后,即可開(kāi)始與第三方開(kāi)放平臺進(jìn)行數據交互,代碼如下:
  // Create an account store object. 創(chuàng )建賬戶(hù)集合
ACAccountStore *accountStore = [[ACAccountStore alloc] init];
// Create an account type that ensures Twitter accounts are retrieved. 確定好 賬戶(hù)類(lèi)型 新浪微博 還是 Facebook 還是 Twitter
ACAccountType *accountType = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierSinaWeibo];
// Request access from the user to use their Twitter accounts. //異步請求 來(lái)得到對應類(lèi)型的賬戶(hù)信息
[accountStore requestAccessToAccountsWithType:accountType withCompletionHandler:^(BOOL granted, NSError *error) {
if(granted) {//如果 granted 返回 NO 表示一個(gè)賬戶(hù)都沒(méi)有設置
// Get the list of Twitter accounts.
NSArray *accountsArray = [accountStore accountsWithAccountType:accountType]; //可能存在多個(gè),看你要用哪個(gè),最好讓用戶(hù)選擇一下

// For the sake of brevity, we&#39;ll assume there is only one Twitter account present.
// You would ideally ask the user which account they want to tweet from, if there is more than one Twitter account present.
if ([accountsArray count] > 0) {
// Grab the initial Twitter account to tweet from.
ACAccount *sinaWeiboAccount = [accountsArray objectAtIndex:0];

NSMutableDictionary *params = [[NSMutableDictionary alloc] init];
[params setObject:@"一條新的微博" forKey:@"status"];
SLRequest *slRequest = [SLRequest requestForServiceType:SLServiceTypeSinaWeibo requestMethod:SLRequestMethodPOST URL:[NSURL URLWithString:@"https://open.weibo.cn/2/statuses/update.json"] parameters:params];
slRequest.account = sinaWeiboAccount;//這行代碼一定要賦值,負責數據交互一定失敗
[slRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
NSLog(@"%@ %@",urlResponse.URL,error);

NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingAllowFragments error:nil];
NSLog(@"%@",dic);
}];

}
}
}];
  獲得每個(gè) ACAccount 后,它就有了一個(gè)標識符。最好在用戶(hù)確認使用哪個(gè)賬號的時(shí)候保存,這樣下次可以直接通過(guò)下面的代碼獲取對應的賬號
  [accountStore accountWithIdentifier:sinaWeiboAccount.identifier];
  總結:
  SNS作為應用推廣的主要方式,必須認真研究。如何喚起和激發(fā)用戶(hù)的分享欲望,讓更多人知道你的應用,那么成功就在不遠處。

使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(文本中要加入安全域名下的一個(gè)網(wǎng)址,敲黑板!)

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 67 次瀏覽 ? 2021-12-30 03:15 ? 來(lái)自相關(guān)話(huà)題

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(文本中要加入安全域名下的一個(gè)網(wǎng)址,敲黑板!)
  一、說(shuō)明
  2017-06-26 微博公告,對界面做了一些改動(dòng):
  statuses/repost 轉發(fā)一條微博
statuses/update 發(fā)布一條微博
statuses/upload 上傳圖片并發(fā)布一條微博
statuses/upload_url_text 發(fā)布一條微博同時(shí)指定上傳的圖片
statuses/destroy 刪除微博
  上面的接口被取消了。
 ?。ňW(wǎng)上大部分資料都是老界面寫(xiě)的,難怪我用老界面好久沒(méi)成功,汗)
  改用新界面:狀態(tài)/分享第三方分享鏈接到微博
  先看一下接口的說(shuō)明:
  
  圖片.png
  我們可以看到status參數的描述特別長(cháng)。
  有一句話(huà)需要特別注意:
  “同時(shí),正文中必須至少收錄
一個(gè)分享到微博的第三方網(wǎng)頁(yè)網(wǎng)址,且該網(wǎng)址只能是第三方(調用方)綁定域下的URL鏈接。綁定域在“我的”應用-應用信息-編輯基本應用信息-在“安全域名”中設置。
  官方用詞晦澀難懂,但通俗易懂:
  “文本中必須收錄
一個(gè)網(wǎng)址,該網(wǎng)址不能是隨機的,必須是應用后臺設置的安全域名下的網(wǎng)址?!?br />   二、具體用途
  什么是“安全域名”?我讀書(shū)少,所以不要假裝是 13。
  還記得在哪里填寫(xiě)“申請地址”和“申請資料”嗎?
  
  圖片.png
  然后它在右邊看起來(lái)像這樣:
  
  圖片.png
  你看見(jiàn)了嗎?這是一個(gè)安全的域名。如果您的信息在此處為空,請快速設置。
  需要注意的一件事是:
  
  圖片.png
  這個(gè)好像不用加“”,不然會(huì )報錯。
  如果它不起作用,您也可以使用我的:
 ?。ㄎ乙灿脛e人的)
  那么重點(diǎn)來(lái)了!敲黑板??!敲黑板?。?!
  我們需要在文本中添加安全域名下的URL,這次我們需要添加“”,像這樣:
  
  圖片.png
  發(fā)布后是這樣的:
  
  F7B691B(`05(LJ_NGOGW4`T.jpg
  如果沒(méi)有設置安全域名或文本中不收錄
安全域名,則會(huì )出現錯誤:
  {"error":"text not find domain!","error_code":10017,"request":"/2/statuses/share.json"}
  關(guān)于“必須做URLencode”,我沒(méi)有做這一步,但是不影響簡(jiǎn)單的微博發(fā)布。
  以后的問(wèn)題,可能只會(huì )出在這個(gè)地方,所以提醒一下。 查看全部

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(文本中要加入安全域名下的一個(gè)網(wǎng)址,敲黑板!)
  一、說(shuō)明
  2017-06-26 微博公告,對界面做了一些改動(dòng):
  statuses/repost 轉發(fā)一條微博
statuses/update 發(fā)布一條微博
statuses/upload 上傳圖片并發(fā)布一條微博
statuses/upload_url_text 發(fā)布一條微博同時(shí)指定上傳的圖片
statuses/destroy 刪除微博
  上面的接口被取消了。
 ?。ňW(wǎng)上大部分資料都是老界面寫(xiě)的,難怪我用老界面好久沒(méi)成功,汗)
  改用新界面:狀態(tài)/分享第三方分享鏈接到微博
  先看一下接口的說(shuō)明:
  
  圖片.png
  我們可以看到status參數的描述特別長(cháng)。
  有一句話(huà)需要特別注意:
  “同時(shí),正文中必須至少收錄
一個(gè)分享到微博的第三方網(wǎng)頁(yè)網(wǎng)址,且該網(wǎng)址只能是第三方(調用方)綁定域下的URL鏈接。綁定域在“我的”應用-應用信息-編輯基本應用信息-在“安全域名”中設置。
  官方用詞晦澀難懂,但通俗易懂:
  “文本中必須收錄
一個(gè)網(wǎng)址,該網(wǎng)址不能是隨機的,必須是應用后臺設置的安全域名下的網(wǎng)址?!?br />   二、具體用途
  什么是“安全域名”?我讀書(shū)少,所以不要假裝是 13。
  還記得在哪里填寫(xiě)“申請地址”和“申請資料”嗎?
  
  圖片.png
  然后它在右邊看起來(lái)像這樣:
  
  圖片.png
  你看見(jiàn)了嗎?這是一個(gè)安全的域名。如果您的信息在此處為空,請快速設置。
  需要注意的一件事是:
  
  圖片.png
  這個(gè)好像不用加“”,不然會(huì )報錯。
  如果它不起作用,您也可以使用我的:
 ?。ㄎ乙灿脛e人的)
  那么重點(diǎn)來(lái)了!敲黑板??!敲黑板?。?!
  我們需要在文本中添加安全域名下的URL,這次我們需要添加“”,像這樣:
  
  圖片.png
  發(fā)布后是這樣的:
  
  F7B691B(`05(LJ_NGOGW4`T.jpg
  如果沒(méi)有設置安全域名或文本中不收錄
安全域名,則會(huì )出現錯誤:
  {"error":"text not find domain!","error_code":10017,"request":"/2/statuses/share.json"}
  關(guān)于“必須做URLencode”,我沒(méi)有做這一步,但是不影響簡(jiǎn)單的微博發(fā)布。
  以后的問(wèn)題,可能只會(huì )出在這個(gè)地方,所以提醒一下。

使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(新浪微博開(kāi)放平臺API的調用和TWITTER接口一樣,都是受限的)

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 55 次瀏覽 ? 2021-12-29 19:10 ? 來(lái)自相關(guān)話(huà)題

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(新浪微博開(kāi)放平臺API的調用和TWITTER接口一樣,都是受限的)
  新浪微博開(kāi)放平臺API調用與TWITTER接口相同,均以小時(shí)為單位進(jìn)行限制和限制。
  他有兩個(gè)限制原則
  1.用戶(hù)不按IP限制登錄,每小時(shí)1000次
  2. 用戶(hù)以基于用戶(hù)的限制登錄,每小時(shí)1000次
  如果應用是用戶(hù)未登錄,則IP被限制。建議登錄破解瓶頸,否則不討論。
  新浪給出了具體限制
  開(kāi)發(fā)者可以通過(guò) rate_limit_status 接口查看調用頻率
  rate_limit_status 接口文檔
  接口返回如下信息
  數組([remaining_hits] =&gt; 999 [hourly_limit] =&gt; 1000 [reset_time_in_seconds] =&gt; 2717 [reset_time] =&gt; 12 月 14 日星期二 17:00:00 +0800 2010)
  代表
  剩余數量為999次,
  每小時(shí)限制1000次,
  計數器清零剩余時(shí)間2717秒,
  下次重置時(shí)間為17:00。
  這樣的調用頻率對于非授權的小應用來(lái)說(shuō)已經(jīng)不夠用了。最簡(jiǎn)單的方法是使用多個(gè)賬號和多個(gè)APP_KEY,相當于做一個(gè)賬號輪詢(xún)。
  首先,多注冊幾個(gè)微博賬號,將它們存儲在一個(gè)數組中,每次隨機調用一個(gè),這樣可以輕松使限制達到3000。
  $wb_id = array(,, );
  列表($wb_name,$wb_password)=explode(“|”,$wb_id[array_rand($wb_id)]);
  如果用同樣的方法列出幾個(gè)APP_KEY,重復組合,就會(huì )更多。比如2個(gè)APP_KEY,3個(gè)賬號,上限可以達到6000。
  我個(gè)人用了3個(gè)APP_KEY,4個(gè)賬號,每小時(shí)1.2萬(wàn)就夠了。
  快速注冊微博賬號的另一種方式
  第一步,
  去gmail注冊一個(gè)長(cháng)賬號,多長(cháng)時(shí)間?反正越長(cháng)越好,一個(gè)原則信比你想注冊的微博賬號長(cháng)
  例如
  第二步,
  使用此賬號在新浪注冊
  第一次使用
  第二次使用
  第三次使用
  ....
  以此類(lèi)推,一個(gè)郵箱可以注冊多個(gè)新浪微博。無(wú)需來(lái)回重新注冊郵箱。 查看全部

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(新浪微博開(kāi)放平臺API的調用和TWITTER接口一樣,都是受限的)
  新浪微博開(kāi)放平臺API調用與TWITTER接口相同,均以小時(shí)為單位進(jìn)行限制和限制。
  他有兩個(gè)限制原則
  1.用戶(hù)不按IP限制登錄,每小時(shí)1000次
  2. 用戶(hù)以基于用戶(hù)的限制登錄,每小時(shí)1000次
  如果應用是用戶(hù)未登錄,則IP被限制。建議登錄破解瓶頸,否則不討論。
  新浪給出了具體限制
  開(kāi)發(fā)者可以通過(guò) rate_limit_status 接口查看調用頻率
  rate_limit_status 接口文檔
  接口返回如下信息
  數組([remaining_hits] =&gt; 999 [hourly_limit] =&gt; 1000 [reset_time_in_seconds] =&gt; 2717 [reset_time] =&gt; 12 月 14 日星期二 17:00:00 +0800 2010)
  代表
  剩余數量為999次,
  每小時(shí)限制1000次,
  計數器清零剩余時(shí)間2717秒,
  下次重置時(shí)間為17:00。
  這樣的調用頻率對于非授權的小應用來(lái)說(shuō)已經(jīng)不夠用了。最簡(jiǎn)單的方法是使用多個(gè)賬號和多個(gè)APP_KEY,相當于做一個(gè)賬號輪詢(xún)。
  首先,多注冊幾個(gè)微博賬號,將它們存儲在一個(gè)數組中,每次隨機調用一個(gè),這樣可以輕松使限制達到3000。
  $wb_id = array(,, );
  列表($wb_name,$wb_password)=explode(“|”,$wb_id[array_rand($wb_id)]);
  如果用同樣的方法列出幾個(gè)APP_KEY,重復組合,就會(huì )更多。比如2個(gè)APP_KEY,3個(gè)賬號,上限可以達到6000。
  我個(gè)人用了3個(gè)APP_KEY,4個(gè)賬號,每小時(shí)1.2萬(wàn)就夠了。
  快速注冊微博賬號的另一種方式
  第一步,
  去gmail注冊一個(gè)長(cháng)賬號,多長(cháng)時(shí)間?反正越長(cháng)越好,一個(gè)原則信比你想注冊的微博賬號長(cháng)
  例如
  第二步,
  使用此賬號在新浪注冊
  第一次使用
  第二次使用
  第三次使用
  ....
  以此類(lèi)推,一個(gè)郵箱可以注冊多個(gè)新浪微博。無(wú)需來(lái)回重新注冊郵箱。

使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站!)

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 54 次瀏覽 ? 2021-12-28 09:01 ? 來(lái)自相關(guān)話(huà)題

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站!)
  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站!開(kāi)放平臺開(kāi)放了不止一項開(kāi)放接口,同時(shí)還提供數據抓取接口供大家方便快捷的搜索到數據。歡迎大家使用新浪微博開(kāi)放平臺,有需要的朋友可以私信我。如果你也需要一份專(zhuān)業(yè)的微博python開(kāi)發(fā)指南,歡迎在簡(jiǎn)書(shū)留言。
  用python保存每條微博到excel表。需要轉載/收藏微博時(shí),按比例分析轉載數量獲取轉發(fā)數量、點(diǎn)贊數量、評論數量。根據相應關(guān)鍵字追加微博,保存在excel表格中。
  github-myblogpicker-知乎專(zhuān)欄微博數據庫文檔??梢愿鶕枰ㄖ圃鰟h改查,相當不錯。
  爬蟲(chóng)和數據庫分析類(lèi)庫不錯,
  即刻采集了最受歡迎排行榜、發(fā)現頻道排行榜、問(wèn)答、評論排行榜、特色排行榜、熱門(mén)采訪(fǎng)等數十大排行榜分類(lèi)。通過(guò)直接獲取公共注冊賬號的公共發(fā)言、評論數據,或者分析出不同用戶(hù)的喜好,滿(mǎn)足你想知道某一條微博是否被采集的需求。例如:根據發(fā)起發(fā)起人、話(huà)題類(lèi)型、話(huà)題熱度、發(fā)帖時(shí)間、微博簡(jiǎn)介等分析微博熱度,以及用戶(hù)的最?lèi)?ài)。
  文章采集方面,還有新浪微博采集器這是一款相當好用的采集器,直接下載安裝,不要wifi什么都,隨用隨開(kāi),實(shí)時(shí)采集,采自己想采的數據,
  foobar2000, 查看全部

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站!)
  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站!開(kāi)放平臺開(kāi)放了不止一項開(kāi)放接口,同時(shí)還提供數據抓取接口供大家方便快捷的搜索到數據。歡迎大家使用新浪微博開(kāi)放平臺,有需要的朋友可以私信我。如果你也需要一份專(zhuān)業(yè)的微博python開(kāi)發(fā)指南,歡迎在簡(jiǎn)書(shū)留言。
  用python保存每條微博到excel表。需要轉載/收藏微博時(shí),按比例分析轉載數量獲取轉發(fā)數量、點(diǎn)贊數量、評論數量。根據相應關(guān)鍵字追加微博,保存在excel表格中。
  github-myblogpicker-知乎專(zhuān)欄微博數據庫文檔??梢愿鶕枰ㄖ圃鰟h改查,相當不錯。
  爬蟲(chóng)和數據庫分析類(lèi)庫不錯,
  即刻采集了最受歡迎排行榜、發(fā)現頻道排行榜、問(wèn)答、評論排行榜、特色排行榜、熱門(mén)采訪(fǎng)等數十大排行榜分類(lèi)。通過(guò)直接獲取公共注冊賬號的公共發(fā)言、評論數據,或者分析出不同用戶(hù)的喜好,滿(mǎn)足你想知道某一條微博是否被采集的需求。例如:根據發(fā)起發(fā)起人、話(huà)題類(lèi)型、話(huà)題熱度、發(fā)帖時(shí)間、微博簡(jiǎn)介等分析微博熱度,以及用戶(hù)的最?lèi)?ài)。
  文章采集方面,還有新浪微博采集器這是一款相當好用的采集器,直接下載安裝,不要wifi什么都,隨用隨開(kāi),實(shí)時(shí)采集,采自己想采的數據,
  foobar2000,

使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(一個(gè)自動(dòng)發(fā)布新浪微博的機器人(圖)分享(組圖) )

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 79 次瀏覽 ? 2021-12-26 03:11 ? 來(lái)自相關(guān)話(huà)題

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(一個(gè)自動(dòng)發(fā)布新浪微博的機器人(圖)分享(組圖)
)
  最近在研究使用Python制作各種類(lèi)型的機器人。今天給大家分享一個(gè)自動(dòng)發(fā)布新浪微博的機器人。
  基本思想
  其實(shí)實(shí)現一個(gè)簡(jiǎn)單的微博機器人并不難。你只需要每天準時(shí)找到要發(fā)布的素材(一般是爬蟲(chóng)),然后通過(guò)微博開(kāi)放的API接口自動(dòng)發(fā)布。
  材料
  素材方面,我這里選擇的是金山詞霸的每日一句英文,我們可以爬取本網(wǎng)站的相關(guān)信息,組成我們的微博素材。
  微博接口
  微博為開(kāi)發(fā)者提供開(kāi)放平臺
  當然,在使用這個(gè)平臺之前,我們仍然需要注冊并創(chuàng )建一個(gè)應用程序。比如像我一樣,創(chuàng )建一個(gè)應用程序
  
  然后我們還需要設置一個(gè)安全域名(以后發(fā)布微博時(shí)會(huì )用到),在應用信息-&gt;基本信息中設置。
  
  還需要設置應用回調地址,在應用信息-&gt;高級信息中設置。
  
  當然,對于微博API的調用,我們可以使用其他人打包的第三方庫,操作起來(lái)更加方便。我這里用了一個(gè)叫“weibo”的庫,直接用pip安裝。
  pip 安裝微博
  但是我遇到了一個(gè)安裝問(wèn)題,錯誤如下
  Traceback (most recent call last):
File "setup.py", line 15, in
long_description=open(&#39;README.rst&#39;).read(),
UnicodeDecodeError: &#39;gbk&#39; codec can&#39;t decode byte 0xae in position 241: illegal multibyte sequence
  好像是編碼問(wèn)題,我們可以通過(guò)修改源代碼來(lái)規避
  
  long_description=open(&#39;README.rst&#39;, encoding=&#39;utf-8&#39;).read(),
  python setup.py build
python setup.py install
  至此就可以成功安裝微博庫了
  準備工作和寫(xiě)作思路就是這些,下面我們來(lái)看看具體的過(guò)程和代碼
  自動(dòng)發(fā)布微博
  根據微博庫的文檔,使用它來(lái)操作微博是比較容易的。您只需要在我們創(chuàng )建微博應用時(shí)提供App Key和App Secret以及應用回調地址信息即可。簡(jiǎn)單的調用代碼如下
  from weibo import Client
c = Client(&#39;App Key&#39;, &#39;App Secret&#39;, &#39;https://www.luobodazahui.top&#39;, username=&#39;username&#39;, password=&#39;password&#39;)
c.post(&#39;statuses/share&#39;, status=&#39;haha&#39; + 安全域名)
  我們運行代碼,如果沒(méi)有任何反應,我們將可以在該帳戶(hù)下的微博中看到剛剛發(fā)布的微博。
  
  最簡(jiǎn)單的微博已經(jīng)發(fā)布成功了,那么我們可以發(fā)布帶圖片的微博,我們試試吧
  根據接口status/share的文檔,我們可以傳入pic參數來(lái)上傳圖片
  
  我們傳入 pic 參數并嘗試
  f = open(&#39;4.png&#39;, &#39;rb&#39;)
c.post(&#39;statuses/share&#39;, status=&#39;haha&#39; + 安全域名, pic=f)
f.close()
  是的,它可以正常發(fā)布帶圖片的微博
  
  那么現在微博的自動(dòng)發(fā)布就完成了,下面我們來(lái)看看如何自動(dòng)獲取微博素材
  微博素材
  對于金山詞霸的每日一句,我們可以使用以下API獲取每日信息
  可以看到界面返回如下信息
  
  我們可以直接使用requests庫來(lái)調用這個(gè)接口
  import requests
url = &#39;http://open.iciba.com/dsapi/&#39;
res = requests.get(url)
content_e = res.json()[&#39;content&#39;]
content_c = res.json()[&#39;note&#39;]
content = content_e + &#39;\n&#39; + content_c
content_t = res.json()[&#39;picture2&#39;]
  現在我們封裝兩個(gè)函數來(lái)完成功能
  def weibo(content, picture):
ff = requests.get(picture).content
c = Client(app_key, app_secret, &#39;https://www.luobodazahui.top&#39;, username=username, password=password)
c.post(&#39;statuses/share&#39;, status=content + &#39;https://www.luobodazahui.com&#39;, pic=ff)
def auto_weibo():
url = &#39;http://open.iciba.com/dsapi/&#39;
res = requests.get(url)
content_e = res.json()[&#39;content&#39;]
content_c = res.json()[&#39;note&#39;]
content = content_e + &#39;\n&#39; + content_c
content_t = res.json()[&#39;picture2&#39;]
weibo(content, content_t)
return &#39;OK&#39;
  現在我們可以創(chuàng )建一個(gè)定時(shí)任務(wù),每天7點(diǎn)運行腳本。
  0 7 * * * python auto_weibo.py
  最終效果如下
   查看全部

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(一個(gè)自動(dòng)發(fā)布新浪微博的機器人(圖)分享(組圖)
)
  最近在研究使用Python制作各種類(lèi)型的機器人。今天給大家分享一個(gè)自動(dòng)發(fā)布新浪微博的機器人。
  基本思想
  其實(shí)實(shí)現一個(gè)簡(jiǎn)單的微博機器人并不難。你只需要每天準時(shí)找到要發(fā)布的素材(一般是爬蟲(chóng)),然后通過(guò)微博開(kāi)放的API接口自動(dòng)發(fā)布。
  材料
  素材方面,我這里選擇的是金山詞霸的每日一句英文,我們可以爬取本網(wǎng)站的相關(guān)信息,組成我們的微博素材。
  微博接口
  微博為開(kāi)發(fā)者提供開(kāi)放平臺
  當然,在使用這個(gè)平臺之前,我們仍然需要注冊并創(chuàng )建一個(gè)應用程序。比如像我一樣,創(chuàng )建一個(gè)應用程序
  
  然后我們還需要設置一個(gè)安全域名(以后發(fā)布微博時(shí)會(huì )用到),在應用信息-&gt;基本信息中設置。
  
  還需要設置應用回調地址,在應用信息-&gt;高級信息中設置。
  
  當然,對于微博API的調用,我們可以使用其他人打包的第三方庫,操作起來(lái)更加方便。我這里用了一個(gè)叫“weibo”的庫,直接用pip安裝。
  pip 安裝微博
  但是我遇到了一個(gè)安裝問(wèn)題,錯誤如下
  Traceback (most recent call last):
File "setup.py", line 15, in
long_description=open(&#39;README.rst&#39;).read(),
UnicodeDecodeError: &#39;gbk&#39; codec can&#39;t decode byte 0xae in position 241: illegal multibyte sequence
  好像是編碼問(wèn)題,我們可以通過(guò)修改源代碼來(lái)規避
  
  long_description=open(&#39;README.rst&#39;, encoding=&#39;utf-8&#39;).read(),
  python setup.py build
python setup.py install
  至此就可以成功安裝微博庫了
  準備工作和寫(xiě)作思路就是這些,下面我們來(lái)看看具體的過(guò)程和代碼
  自動(dòng)發(fā)布微博
  根據微博庫的文檔,使用它來(lái)操作微博是比較容易的。您只需要在我們創(chuàng )建微博應用時(shí)提供App Key和App Secret以及應用回調地址信息即可。簡(jiǎn)單的調用代碼如下
  from weibo import Client
c = Client(&#39;App Key&#39;, &#39;App Secret&#39;, &#39;https://www.luobodazahui.top&#39;, username=&#39;username&#39;, password=&#39;password&#39;)
c.post(&#39;statuses/share&#39;, status=&#39;haha&#39; + 安全域名)
  我們運行代碼,如果沒(méi)有任何反應,我們將可以在該帳戶(hù)下的微博中看到剛剛發(fā)布的微博。
  
  最簡(jiǎn)單的微博已經(jīng)發(fā)布成功了,那么我們可以發(fā)布帶圖片的微博,我們試試吧
  根據接口status/share的文檔,我們可以傳入pic參數來(lái)上傳圖片
  
  我們傳入 pic 參數并嘗試
  f = open(&#39;4.png&#39;, &#39;rb&#39;)
c.post(&#39;statuses/share&#39;, status=&#39;haha&#39; + 安全域名, pic=f)
f.close()
  是的,它可以正常發(fā)布帶圖片的微博
  
  那么現在微博的自動(dòng)發(fā)布就完成了,下面我們來(lái)看看如何自動(dòng)獲取微博素材
  微博素材
  對于金山詞霸的每日一句,我們可以使用以下API獲取每日信息
  可以看到界面返回如下信息
  
  我們可以直接使用requests庫來(lái)調用這個(gè)接口
  import requests
url = &#39;http://open.iciba.com/dsapi/&#39;
res = requests.get(url)
content_e = res.json()[&#39;content&#39;]
content_c = res.json()[&#39;note&#39;]
content = content_e + &#39;\n&#39; + content_c
content_t = res.json()[&#39;picture2&#39;]
  現在我們封裝兩個(gè)函數來(lái)完成功能
  def weibo(content, picture):
ff = requests.get(picture).content
c = Client(app_key, app_secret, &#39;https://www.luobodazahui.top&#39;, username=username, password=password)
c.post(&#39;statuses/share&#39;, status=content + &#39;https://www.luobodazahui.com&#39;, pic=ff)
def auto_weibo():
url = &#39;http://open.iciba.com/dsapi/&#39;
res = requests.get(url)
content_e = res.json()[&#39;content&#39;]
content_c = res.json()[&#39;note&#39;]
content = content_e + &#39;\n&#39; + content_c
content_t = res.json()[&#39;picture2&#39;]
weibo(content, content_t)
return &#39;OK&#39;
  現在我們可以創(chuàng )建一個(gè)定時(shí)任務(wù),每天7點(diǎn)運行腳本。
  0 7 * * * python auto_weibo.py
  最終效果如下
  

使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(微博模擬登錄這是本次爬取 )

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 59 次瀏覽 ? 2021-12-26 00:06 ? 來(lái)自相關(guān)話(huà)題

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(微博模擬登錄這是本次爬取
)
  微博模擬登錄
  這是這次爬取的網(wǎng)址:
  一、請求分析
  找到登錄位置,填寫(xiě)用戶(hù)名和密碼登錄
  
  查看響應此請求的數據
  
  這是來(lái)自響應的數據,保存它
  exectime: 8
nonce: "HW9VSX"
pcid: "gz-4ede4c6269a09f5b7a6490f790b4aa944eec"
pubkey: "EB2A38568661887FA180BDDB5CABD5F21C7BFD59C090CB2D245A87AC253062882729293E5506350508E7F9AA3BB77F4333231490F915F6D63C55FE2F08A49B353F444AD3993CACC02DB784ABBB8E42A9B1BBFFFB38BE18D78E87A0E41B9B8F73A928EE0CCEE1F6739884B9777E4FE9E88A1BBE495927AC4A799B3181D6442443"
retcode: 0
rsakv: "1330428213"
servertime: 1568257059
  繼續完善登錄操作,輸入密碼,點(diǎn)擊登錄按鈕
  
  經(jīng)過(guò)分析,發(fā)現改變的參數是sp、nonce、servetime。servetime 是當前時(shí)間戳,我們只需要找到另外兩個(gè)參數的生成方法即可。對了,su的參數是base64加密生成的
  二、求sp,nonce的加密方式
  這次我不會(huì )使用搜索關(guān)鍵字來(lái)查找加密位置。
  
  找到調用函數的位置,打個(gè)斷點(diǎn),然后登錄
  
  經(jīng)過(guò)js代碼流程調試和分析,我們終于找到了加密的位置
  
  簡(jiǎn)單介紹如何調試js代碼
  
  找到sp,nonce的位置,通過(guò)python代碼實(shí)現其加密方法
  
  sp是通過(guò)rsa加密和加密生成的。rsa的具體用法可以通過(guò)百度查到?;蛘咄ㄟ^(guò)sha1加密生成。至于他是怎么得到me.rsaPubkey的,他只是在我們點(diǎn)擊登錄之前發(fā)送了一個(gè)請求,該請求的響應數據中收錄
了它。如果你測試更多次,你會(huì )發(fā)現這個(gè)值是固定的。所以我們也可以直接使用它而無(wú)需請求訪(fǎng)問(wèn)。
  nonce:在沒(méi)有點(diǎn)擊登錄之前,它也出現在請求的響應數據中。但是,我們多次點(diǎn)擊登錄,都沒(méi)有找到這個(gè)請求。nonce 的值每次都不同。所以必須是本地js文件的某個(gè)函數生成的,不需要請求服務(wù)器去獲取。我們在這里找到了 nonce 生成函數
  
  
  import random
import rsa
import hashlib
from binascii import b2a_hex
def get_nonce(n):
result = ""
random_str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
for i in range(n):
index = random.randint(0, len(random_str) - 1)
result += random_str[index]
return result
def get_sp_rsa(password, servertime, nonce):
key = "EB2A38568661887FA180BDDB5CABD5F21C7BFD59C090CB2D245A87AC253062882729293E5506350508E7F9AA3BB77F4333231490F915F6D63C55FE2F08A49B353F444AD3993CACC02DB784ABBB8E42A9B1BBFFFB38BE18D78E87A0E41B9B8F73A928EE0CCEE1F6739884B9777E4FE9E88A1BBE495927AC4A799B3181D6442443"
pubkey = rsa.PublicKey(int(key, 16), int("10001", 16))
res = rsa.encrypt(bytes("" + "\t".join([servertime, nonce]) + "\n" + password,encoding="utf-8"), pubkey)
return b2a_hex(res)
def get_sp_sha1(password, servertime, nonce):
res = hashlib.sha1(bytes("" + hashlib.sha1(bytes(hashlib.sha1(bytes(password, encoding="utf-8")).hexdigest(),encoding="utf-8")).hexdigest() + servertime + nonce,encoding="utf-8")).hexdigest()
return res
  三、響應數據
  請求參數分析基本完成,這次輸入正確的用戶(hù)名和密碼。響應數據是什么?
  
  打開(kāi)fiddler,然后退出當前賬號,重新登錄。fiddler 上會(huì )有很多請求。找到需要的請求,查看響應內容
  
  
  
  這樣做時(shí),每個(gè)響應都將設置 cookie。所以按照上面的流程,識別登錄的cookie肯定是可用的。之后,就拿著(zhù)這個(gè)cookie做其他的操作吧。
  最后附上代碼
  import requests, random, time, rsa, hashlib, base64, re, json
from binascii import b2a_hex
class WeiBo:
def __init__(self):
self.session = requests.Session()
self.headers = {
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36"
}
def login(self, account, password):
api = "https://login.sina.com.cn/sso/ ... in.js(v1.4.19)"
nonce = self._get_nonce()
servertime = self._get_now_time()
sp = self._get_sp_rsa(password, servertime, nonce)
su = self._get_su(account)
data = {
"entry": "weibo",
"gateway": "1",
"from": "",
"savestate": "7",
"qrcode_flag": "false",
"useticket": "1",
"pagerefer": "https://login.sina.com.cn/cros ... ot%3B,
"vsnf": "1",
"su": su,
"service": "miniblog",
"servertime": servertime,
"nonce": nonce,
"pwencode": "rsa2",
"rsakv": "1330428213",
"sp": sp,
"sr": "1920*1080",
"encoding": "UTF - 8",
"prelt": "149",
"url": "https://weibo.com/ajaxlogin.ph ... ot%3B,
"returntype": "META",
}
headers = self.headers.copy()
headers.update({
"Host": "login.sina.com.cn",
"Origin": "https://weibo.com",
"Referer": "https://weibo.com/"
})
response = self.session.post(api, headers=headers, data=data, allow_redirects=False)
search_result = self._re_search("location.replace\(\"(.*?)\"", response.text)
redirct_url = search_result and search_result.group(1)
if not redirct_url:
raise Exception("重定向url獲取失敗")
response = self.session.get(redirct_url, headers=headers.update({
"Referer": "https://login.sina.com.cn/sso/ ... in.js(v1.4.19)"
}), allow_redirects=False)
search_result = self._re_search('"arrURL":(.*?)}', response.text)
redirct_urls = search_result and search_result.group(1)
if not redirct_urls:
raise Exception("重定向url獲取失敗")
redirct_url_list = json.loads(redirct_urls)
userId = ""
for url in redirct_url_list:
response = self.session.get(url, headers=self.headers)
if url.startswith("https://passport.weibo.com/wbsso/login"):
userId = self._re_search('"uniqueid":"(.*?)"', response.text).group(1)
if not userId:
raise Exception("userId獲取失敗")
user_details_url = "https://weibo.com/u/{}/home?wvr=5&lf=reg".format(userId)
response = self.session.get(user_details_url, headers={
"Referer": "https://weibo.com/",
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36"
})
if self._re_search(userId, response.text):
print("登錄成功")
print(self.session.cookies)
else:
print("登錄失敗")
def _get_nonce(self):
nonce = ""
random_str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
for i in range(5):
index = random.randint(0, len(random_str) - 1)
nonce += random_str[index]
return nonce
def _get_now_time(self):
return str(int(time.time()))
def _get_sp_rsa(self, password, servertime, nonce):
key = "EB2A38568661887FA180BDDB5CABD5F21C7BFD59C090CB2D245A87AC253062882729293E5506350508E7F9AA3BB77F4333231490F915F6D63C55FE2F08A49B353F444AD3993CACC02DB784ABBB8E42A9B1BBFFFB38BE18D78E87A0E41B9B8F73A928EE0CCEE1F6739884B9777E4FE9E88A1BBE495927AC4A799B3181D6442443"
pubkey = rsa.PublicKey(int(key, 16), int("10001", 16))
res = rsa.encrypt(bytes("" + "\t".join([servertime, nonce]) + "\n" + password, encoding="utf-8"), pubkey)
return b2a_hex(res)
def _get_sp_sha1(self, password, servertime, nonce):
res = hashlib.sha1(bytes("" + hashlib.sha1(bytes(hashlib.sha1(bytes(password, encoding="utf-8")).hexdigest(),
encoding="utf-8")).hexdigest() + servertime + nonce,
encoding="utf-8")).hexdigest()
return res
def _get_su(self, account):
return str(base64.b64encode(bytes(account, encoding="utf-8")), encoding="utf-8")
def _re_search(self, pattern, html):
return re.search(pattern, html, re.S)
def test(self):
self.login("18716758777", "123456")
if __name__ == '__main__':
wb = WeiBo()
wb.test() 查看全部

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(微博模擬登錄這是本次爬取
)
  微博模擬登錄
  這是這次爬取的網(wǎng)址:
  一、請求分析
  找到登錄位置,填寫(xiě)用戶(hù)名和密碼登錄
  
  查看響應此請求的數據
  
  這是來(lái)自響應的數據,保存它
  exectime: 8
nonce: "HW9VSX"
pcid: "gz-4ede4c6269a09f5b7a6490f790b4aa944eec"
pubkey: "EB2A38568661887FA180BDDB5CABD5F21C7BFD59C090CB2D245A87AC253062882729293E5506350508E7F9AA3BB77F4333231490F915F6D63C55FE2F08A49B353F444AD3993CACC02DB784ABBB8E42A9B1BBFFFB38BE18D78E87A0E41B9B8F73A928EE0CCEE1F6739884B9777E4FE9E88A1BBE495927AC4A799B3181D6442443"
retcode: 0
rsakv: "1330428213"
servertime: 1568257059
  繼續完善登錄操作,輸入密碼,點(diǎn)擊登錄按鈕
  
  經(jīng)過(guò)分析,發(fā)現改變的參數是sp、nonce、servetime。servetime 是當前時(shí)間戳,我們只需要找到另外兩個(gè)參數的生成方法即可。對了,su的參數是base64加密生成的
  二、求sp,nonce的加密方式
  這次我不會(huì )使用搜索關(guān)鍵字來(lái)查找加密位置。
  
  找到調用函數的位置,打個(gè)斷點(diǎn),然后登錄
  
  經(jīng)過(guò)js代碼流程調試和分析,我們終于找到了加密的位置
  
  簡(jiǎn)單介紹如何調試js代碼
  
  找到sp,nonce的位置,通過(guò)python代碼實(shí)現其加密方法
  
  sp是通過(guò)rsa加密和加密生成的。rsa的具體用法可以通過(guò)百度查到?;蛘咄ㄟ^(guò)sha1加密生成。至于他是怎么得到me.rsaPubkey的,他只是在我們點(diǎn)擊登錄之前發(fā)送了一個(gè)請求,該請求的響應數據中收錄
了它。如果你測試更多次,你會(huì )發(fā)現這個(gè)值是固定的。所以我們也可以直接使用它而無(wú)需請求訪(fǎng)問(wèn)。
  nonce:在沒(méi)有點(diǎn)擊登錄之前,它也出現在請求的響應數據中。但是,我們多次點(diǎn)擊登錄,都沒(méi)有找到這個(gè)請求。nonce 的值每次都不同。所以必須是本地js文件的某個(gè)函數生成的,不需要請求服務(wù)器去獲取。我們在這里找到了 nonce 生成函數
  
  
  import random
import rsa
import hashlib
from binascii import b2a_hex
def get_nonce(n):
result = ""
random_str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
for i in range(n):
index = random.randint(0, len(random_str) - 1)
result += random_str[index]
return result
def get_sp_rsa(password, servertime, nonce):
key = "EB2A38568661887FA180BDDB5CABD5F21C7BFD59C090CB2D245A87AC253062882729293E5506350508E7F9AA3BB77F4333231490F915F6D63C55FE2F08A49B353F444AD3993CACC02DB784ABBB8E42A9B1BBFFFB38BE18D78E87A0E41B9B8F73A928EE0CCEE1F6739884B9777E4FE9E88A1BBE495927AC4A799B3181D6442443"
pubkey = rsa.PublicKey(int(key, 16), int("10001", 16))
res = rsa.encrypt(bytes("" + "\t".join([servertime, nonce]) + "\n" + password,encoding="utf-8"), pubkey)
return b2a_hex(res)
def get_sp_sha1(password, servertime, nonce):
res = hashlib.sha1(bytes("" + hashlib.sha1(bytes(hashlib.sha1(bytes(password, encoding="utf-8")).hexdigest(),encoding="utf-8")).hexdigest() + servertime + nonce,encoding="utf-8")).hexdigest()
return res
  三、響應數據
  請求參數分析基本完成,這次輸入正確的用戶(hù)名和密碼。響應數據是什么?
  
  打開(kāi)fiddler,然后退出當前賬號,重新登錄。fiddler 上會(huì )有很多請求。找到需要的請求,查看響應內容
  
  
  
  這樣做時(shí),每個(gè)響應都將設置 cookie。所以按照上面的流程,識別登錄的cookie肯定是可用的。之后,就拿著(zhù)這個(gè)cookie做其他的操作吧。
  最后附上代碼
  import requests, random, time, rsa, hashlib, base64, re, json
from binascii import b2a_hex
class WeiBo:
def __init__(self):
self.session = requests.Session()
self.headers = {
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36"
}
def login(self, account, password):
api = "https://login.sina.com.cn/sso/ ... in.js(v1.4.19)"
nonce = self._get_nonce()
servertime = self._get_now_time()
sp = self._get_sp_rsa(password, servertime, nonce)
su = self._get_su(account)
data = {
"entry": "weibo",
"gateway": "1",
"from": "",
"savestate": "7",
"qrcode_flag": "false",
"useticket": "1",
"pagerefer": "https://login.sina.com.cn/cros ... ot%3B,
"vsnf": "1",
"su": su,
"service": "miniblog",
"servertime": servertime,
"nonce": nonce,
"pwencode": "rsa2",
"rsakv": "1330428213",
"sp": sp,
"sr": "1920*1080",
"encoding": "UTF - 8",
"prelt": "149",
"url": "https://weibo.com/ajaxlogin.ph ... ot%3B,
"returntype": "META",
}
headers = self.headers.copy()
headers.update({
"Host": "login.sina.com.cn",
"Origin": "https://weibo.com",
"Referer": "https://weibo.com/"
})
response = self.session.post(api, headers=headers, data=data, allow_redirects=False)
search_result = self._re_search("location.replace\(\"(.*?)\"", response.text)
redirct_url = search_result and search_result.group(1)
if not redirct_url:
raise Exception("重定向url獲取失敗")
response = self.session.get(redirct_url, headers=headers.update({
"Referer": "https://login.sina.com.cn/sso/ ... in.js(v1.4.19)"
}), allow_redirects=False)
search_result = self._re_search('"arrURL":(.*?)}', response.text)
redirct_urls = search_result and search_result.group(1)
if not redirct_urls:
raise Exception("重定向url獲取失敗")
redirct_url_list = json.loads(redirct_urls)
userId = ""
for url in redirct_url_list:
response = self.session.get(url, headers=self.headers)
if url.startswith("https://passport.weibo.com/wbsso/login";):
userId = self._re_search('"uniqueid":"(.*?)"', response.text).group(1)
if not userId:
raise Exception("userId獲取失敗")
user_details_url = "https://weibo.com/u/{}/home?wvr=5&lf=reg".format(userId)
response = self.session.get(user_details_url, headers={
"Referer": "https://weibo.com/",
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36"
})
if self._re_search(userId, response.text):
print("登錄成功")
print(self.session.cookies)
else:
print("登錄失敗")
def _get_nonce(self):
nonce = ""
random_str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
for i in range(5):
index = random.randint(0, len(random_str) - 1)
nonce += random_str[index]
return nonce
def _get_now_time(self):
return str(int(time.time()))
def _get_sp_rsa(self, password, servertime, nonce):
key = "EB2A38568661887FA180BDDB5CABD5F21C7BFD59C090CB2D245A87AC253062882729293E5506350508E7F9AA3BB77F4333231490F915F6D63C55FE2F08A49B353F444AD3993CACC02DB784ABBB8E42A9B1BBFFFB38BE18D78E87A0E41B9B8F73A928EE0CCEE1F6739884B9777E4FE9E88A1BBE495927AC4A799B3181D6442443"
pubkey = rsa.PublicKey(int(key, 16), int("10001", 16))
res = rsa.encrypt(bytes("" + "\t".join([servertime, nonce]) + "\n" + password, encoding="utf-8"), pubkey)
return b2a_hex(res)
def _get_sp_sha1(self, password, servertime, nonce):
res = hashlib.sha1(bytes("" + hashlib.sha1(bytes(hashlib.sha1(bytes(password, encoding="utf-8")).hexdigest(),
encoding="utf-8")).hexdigest() + servertime + nonce,
encoding="utf-8")).hexdigest()
return res
def _get_su(self, account):
return str(base64.b64encode(bytes(account, encoding="utf-8")), encoding="utf-8")
def _re_search(self, pattern, html):
return re.search(pattern, html, re.S)
def test(self):
self.login("18716758777", "123456")
if __name__ == '__main__':
wb = WeiBo()
wb.test()

使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站( 如何自動(dòng)將的Twitter信息同步到國內的新浪微博(圖))

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 95 次瀏覽 ? 2021-12-25 13:28 ? 來(lái)自相關(guān)話(huà)題

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(
如何自動(dòng)將的Twitter信息同步到國內的新浪微博(圖))
  
  如何將推特信息自動(dòng)同步到新浪微博、開(kāi)心網(wǎng)、人人網(wǎng)等國內SNS網(wǎng)站。有大約一小時(shí)的時(shí)差。這個(gè)時(shí)差是由 TwitterFeed 引起的。同時(shí),這種方法的設置比較繁瑣,需要多次翻墻。
  于是,我開(kāi)始嘗試一種新的同步方式,開(kāi)發(fā)了一個(gè)Python程序,可以定時(shí)自動(dòng)讀取和同步推特信息,簡(jiǎn)化同步過(guò)程,縮短同步時(shí)間,實(shí)現基本的實(shí)時(shí)同步功能。原同步流程圖為:推特-&gt;appspot-&gt;twitterfeed-&gt;ping.fm-&gt;customurl-&gt;火兔-&gt;新浪微博,新的同步流程變?yōu)椋簍witter-&gt;appspot-&gt;火兔-&gt;新浪微博,步驟大大簡(jiǎn)化了,只需在GAE上設置一個(gè)定時(shí)執行的定時(shí)任務(wù)即可。
  因為 GAE 支持 Cron Job 調度任務(wù),所以我們的 Python 程序可以每分鐘自動(dòng)調用一次。打電話(huà)時(shí),首先從推特上抓取用戶(hù)的最新消息。抓取成功后,消息會(huì )同步到聽(tīng)火。然后分發(fā)到新浪微博、開(kāi)心網(wǎng)等,如果設置為每分鐘執行一次,同步時(shí)差只有一分鐘左右,基本實(shí)現了Twitter信息實(shí)時(shí)同步到SNS等網(wǎng)站的功能新浪微博。
  我在GAE上調試了程序Python程序,不流暢。我按照官方說(shuō)明配置了cron.yaml文件,但是更新了Twitter.py后,cron作業(yè)計劃任務(wù)還是不行,后臺也看不到相關(guān)的cron。工作任務(wù)。
  經(jīng)過(guò)一番研究,終于解決了GAE中Python的Cron Job定時(shí)任務(wù)的問(wèn)題。原因很簡(jiǎn)單,因為我的“Google App Engine SDK for Python”是很久以前安裝的,當時(shí)GAE還不支持定時(shí)任務(wù)。無(wú)法更新 cron.yaml 文件。重新下載最新版本的“Google App Engine SDK for Python”并安裝后,Cron Job定時(shí)任務(wù)更新成功。
  然而,新的問(wèn)題又來(lái)了。我發(fā)現當應用程序調用Twitter API 時(shí),失敗率非常高。在幾乎一半的情況下,它會(huì )提示“超出速率限制??蛻?hù)端每小時(shí)不能發(fā)出超過(guò) 150 個(gè)請求”。?!?這讓我懷疑是不是GAE的外部IP很小,有很多第三方程序在GAE上調用Twitter API,導致每小時(shí)調用超過(guò)150次。不然我自己的調用肯定不會(huì )有這么高的頻率,可能是因為推特沒(méi)有把GAE的IP設置為白名單。如果有一天推特不限制GAE的IP,應該沒(méi)有問(wèn)題。
  安裝說(shuō)明:
  下載,用TortoiseSVN查看SVN地址,然后編輯app.yaml,改成你的appspot應用名,然后修改twitter.py文件最后一行改你的推特用戶(hù)名,嘟嘟火兔用戶(hù)名和密碼分別填寫(xiě)。cron.yaml文件中收錄
了定時(shí)任務(wù)設置,然后就可以按照本文的方法發(fā)布,執行appcfg.py更新目錄名,使用Gmail賬號和密碼發(fā)布即可。
  發(fā)布后,GAE 可以定期執行 twitter.py 程序。由于定時(shí)執行最小可以設置為1分鐘,所以同步速度非???,基本可以達到實(shí)時(shí)自動(dòng)同步的效果。
  
  () () 查看全部

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(
如何自動(dòng)將的Twitter信息同步到國內的新浪微博(圖))
  
  如何將推特信息自動(dòng)同步到新浪微博、開(kāi)心網(wǎng)、人人網(wǎng)等國內SNS網(wǎng)站。有大約一小時(shí)的時(shí)差。這個(gè)時(shí)差是由 TwitterFeed 引起的。同時(shí),這種方法的設置比較繁瑣,需要多次翻墻。
  于是,我開(kāi)始嘗試一種新的同步方式,開(kāi)發(fā)了一個(gè)Python程序,可以定時(shí)自動(dòng)讀取和同步推特信息,簡(jiǎn)化同步過(guò)程,縮短同步時(shí)間,實(shí)現基本的實(shí)時(shí)同步功能。原同步流程圖為:推特-&gt;appspot-&gt;twitterfeed-&gt;ping.fm-&gt;customurl-&gt;火兔-&gt;新浪微博,新的同步流程變?yōu)椋簍witter-&gt;appspot-&gt;火兔-&gt;新浪微博,步驟大大簡(jiǎn)化了,只需在GAE上設置一個(gè)定時(shí)執行的定時(shí)任務(wù)即可。
  因為 GAE 支持 Cron Job 調度任務(wù),所以我們的 Python 程序可以每分鐘自動(dòng)調用一次。打電話(huà)時(shí),首先從推特上抓取用戶(hù)的最新消息。抓取成功后,消息會(huì )同步到聽(tīng)火。然后分發(fā)到新浪微博、開(kāi)心網(wǎng)等,如果設置為每分鐘執行一次,同步時(shí)差只有一分鐘左右,基本實(shí)現了Twitter信息實(shí)時(shí)同步到SNS等網(wǎng)站的功能新浪微博。
  我在GAE上調試了程序Python程序,不流暢。我按照官方說(shuō)明配置了cron.yaml文件,但是更新了Twitter.py后,cron作業(yè)計劃任務(wù)還是不行,后臺也看不到相關(guān)的cron。工作任務(wù)。
  經(jīng)過(guò)一番研究,終于解決了GAE中Python的Cron Job定時(shí)任務(wù)的問(wèn)題。原因很簡(jiǎn)單,因為我的“Google App Engine SDK for Python”是很久以前安裝的,當時(shí)GAE還不支持定時(shí)任務(wù)。無(wú)法更新 cron.yaml 文件。重新下載最新版本的“Google App Engine SDK for Python”并安裝后,Cron Job定時(shí)任務(wù)更新成功。
  然而,新的問(wèn)題又來(lái)了。我發(fā)現當應用程序調用Twitter API 時(shí),失敗率非常高。在幾乎一半的情況下,它會(huì )提示“超出速率限制??蛻?hù)端每小時(shí)不能發(fā)出超過(guò) 150 個(gè)請求”。?!?這讓我懷疑是不是GAE的外部IP很小,有很多第三方程序在GAE上調用Twitter API,導致每小時(shí)調用超過(guò)150次。不然我自己的調用肯定不會(huì )有這么高的頻率,可能是因為推特沒(méi)有把GAE的IP設置為白名單。如果有一天推特不限制GAE的IP,應該沒(méi)有問(wèn)題。
  安裝說(shuō)明:
  下載,用TortoiseSVN查看SVN地址,然后編輯app.yaml,改成你的appspot應用名,然后修改twitter.py文件最后一行改你的推特用戶(hù)名,嘟嘟火兔用戶(hù)名和密碼分別填寫(xiě)。cron.yaml文件中收錄
了定時(shí)任務(wù)設置,然后就可以按照本文的方法發(fā)布,執行appcfg.py更新目錄名,使用Gmail賬號和密碼發(fā)布即可。
  發(fā)布后,GAE 可以定期執行 twitter.py 程序。由于定時(shí)執行最小可以設置為1分鐘,所以同步速度非???,基本可以達到實(shí)時(shí)自動(dòng)同步的效果。
  
  () ()

使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(寫(xiě)個(gè)一條怎么火起來(lái)?一條B/S架構分析)

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 43 次瀏覽 ? 2021-12-25 04:07 ? 來(lái)自相關(guān)話(huà)題

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(寫(xiě)個(gè)一條怎么火起來(lái)?一條B/S架構分析)
  還在想著(zhù)寫(xiě)個(gè)例子來(lái)實(shí)際使用新浪的api。結果,實(shí)驗室的考勤機著(zhù)火了。8日下午盯著(zhù)微博,看到那條微博的轉發(fā)量從一開(kāi)始是一點(diǎn)點(diǎn)增長(cháng),然后是后面快速增長(cháng)。所以我想寫(xiě)點(diǎn)什么來(lái)分析微博是如何流行起來(lái)的。
  因為擅長(cháng)寫(xiě)B/S項目,所以先確定這個(gè)分析工具是B/S結構,然后考慮應該提供什么功能。
  首先想到的是粉絲的增長(cháng)。折線(xiàn)圖可用于顯示顯示。橫軸是時(shí)間,縱軸是風(fēng)扇數量。但是我去新浪找了一個(gè)可以實(shí)現這個(gè)功能的api。新浪提供的最新api是friends/followers(獲取用戶(hù)的粉絲列表),但是返回值不包括成為粉絲的時(shí)間。我現在能想象的數據庫表的設計大概就是一個(gè)用戶(hù)的表,然后這個(gè)表里面有一列follower,里面的值就是用戶(hù)的id。在這種情況下,真的沒(méi)有地方可以存放成為粉絲的時(shí)間。(我不知道實(shí)際情況是否如此)。因此,此功能暫時(shí)不可用。
  想到的第二件事是粉絲的分布。條形圖可用于顯示。橫軸為省,縱軸為風(fēng)扇數。新浪提供的api(friendships/followers:獲取用戶(hù)的粉絲列表)可以獲取粉絲所在的省份(.getProvince(),返回一個(gè)數字),然后根據api(common/get省份:獲取列表?。?,就可以得到號碼對應的省的名稱(chēng),所以在前臺得到你要找的微博的名稱(chēng),然后用ext來(lái)繪制地圖。效果如下:
  
 ?。ㄉ蠄D中統計時(shí)間為2012-3-12 9:20 PM,總粉絲數4770)
  開(kāi)發(fā)筆記:
  1. 認證相關(guān):使用OAuth認證。有一個(gè)登錄頁(yè)面 login.jsp 和一個(gè)回調頁(yè)面 index.jsp。在login.jsp中打開(kāi)新浪的認證頁(yè)面,認證成功后跳轉到回調頁(yè)面索引。jsp(需要同時(shí)在應用應用場(chǎng)所和項目中配置回調頁(yè)面,見(jiàn)上一篇博文)。這時(shí)候index.jsp的地址欄中有一個(gè)code值(下一步使用),使用request.getParameter("code")獲取這個(gè)值,然后執行oauth.getAccessTokenByCode(code).getAccessToken () 獲取最重要的accessToken。有了這個(gè)值,認證就被認為是成功的。這個(gè)值基本用于后續調用api,所以存儲在session中(session.setAttribute("accessToken", 訪(fǎng)問(wèn)令牌))。至此,認證成功。但是有一個(gè)問(wèn)題,刷新index.jsp的時(shí)候,會(huì )報錯“error:invalid_grant error_code:21325/oauth2/access_token”,所以改一下,開(kāi)頭先判斷session.getAttribute("accessToken")是否可用index.jsp 的值,如果沒(méi)有認證,如果沒(méi)有操作。這個(gè)改動(dòng)后報錯,報錯是空指針。原來(lái),當用戶(hù)第一次登錄時(shí),會(huì )話(huà)中沒(méi)有accessToken。解決的辦法是加一句session.setAttribute(" to login.jsp.accessToken","")。錯誤是一個(gè)空指針。原來(lái),當用戶(hù)第一次登錄時(shí),會(huì )話(huà)中沒(méi)有accessToken。解決的辦法是加一句session.setAttribute(" to login.jsp.accessToken","")。錯誤是一個(gè)空指針。原來(lái),當用戶(hù)第一次登錄時(shí),會(huì )話(huà)中沒(méi)有accessToken。解決的辦法是加一句session.setAttribute(" to login.jsp.accessToken","")。
  2.friendships/followers 的參數是screen_name(用戶(hù)昵稱(chēng))、count(單頁(yè)返回的記錄條數,默認50條,最大20條0)、cursor(那個(gè)返回結果,默認為0),表示一次只能返回200條記錄,所以需要執行多次,每次執行后可以得到此時(shí)光標的位置根據users.getNextCursor(),得到這個(gè)值,然后作為下一次執行的參數cursor的值,我用的是do-while方法,循環(huán)的條件是users.getNextCursor( ) 不為 0(因為當最后一次執行完成時(shí),users.getNextCursor()=0)。
  3. 如何存儲一個(gè)省的人數:用一個(gè)大小為100的數組a來(lái)存儲一個(gè)省的人數,初始值為0,省代碼為數組編號(例如,北京的省代碼是11,粉絲的省是11點(diǎn),a[11]++)。
  4. 按人數從大到小排序:設置兩個(gè)參數(int big=0 和 int p=-1) 遍歷數組一次,最大的用來(lái)存儲最大值找到了,p用來(lái)存放對應的省份代碼,使用do-while循環(huán),循環(huán)條件p!=-1,時(shí)間復雜度為100*n(人數不為0的省份) .
  5. 省碼轉對應省的方式:common/get Province可以得到省列表,這個(gè)api的參數是country(國家碼),我一開(kāi)始用的是086,結果是都是空的。,然后再根據另一個(gè)接口common/get_country(獲取國家列表)才發(fā)現中國的代碼應該是001(呃...)。在新浪提供的例子中,我沒(méi)有找到獲取省份列表的接口,所以我模仿寫(xiě)了一個(gè),返回值是JSONArray的格式,然后使用json.getString(index)獲取索引組,然后字符串(例如:{"001011","Beijing"})處理并獲取與省號對應的省名。為了減少接口調用次數,
  存在的問(wèn)題:
  1. 更改用戶(hù)昵稱(chēng)點(diǎn)擊查詢(xún),然后在原圖下方生成一張圖片。最好讓原圖消失,然后在這個(gè)位置重新生成新圖。這個(gè)應該是前臺代碼有問(wèn)題。ext應該比較熟悉和熟悉。
  2.friendships/followers 最多返回5000條記錄,所以如果follower超過(guò)5000,只能分析最近5000follower的分布。(馬上就要破五千了啊啊?。?br />   3. 粉絲總數應顯示在圖片或網(wǎng)頁(yè)上
  4.現在速度很慢。4770粉絲號用了20多秒才放出圖片。 查看全部

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(寫(xiě)個(gè)一條怎么火起來(lái)?一條B/S架構分析)
  還在想著(zhù)寫(xiě)個(gè)例子來(lái)實(shí)際使用新浪的api。結果,實(shí)驗室的考勤機著(zhù)火了。8日下午盯著(zhù)微博,看到那條微博的轉發(fā)量從一開(kāi)始是一點(diǎn)點(diǎn)增長(cháng),然后是后面快速增長(cháng)。所以我想寫(xiě)點(diǎn)什么來(lái)分析微博是如何流行起來(lái)的。
  因為擅長(cháng)寫(xiě)B/S項目,所以先確定這個(gè)分析工具是B/S結構,然后考慮應該提供什么功能。
  首先想到的是粉絲的增長(cháng)。折線(xiàn)圖可用于顯示顯示。橫軸是時(shí)間,縱軸是風(fēng)扇數量。但是我去新浪找了一個(gè)可以實(shí)現這個(gè)功能的api。新浪提供的最新api是friends/followers(獲取用戶(hù)的粉絲列表),但是返回值不包括成為粉絲的時(shí)間。我現在能想象的數據庫表的設計大概就是一個(gè)用戶(hù)的表,然后這個(gè)表里面有一列follower,里面的值就是用戶(hù)的id。在這種情況下,真的沒(méi)有地方可以存放成為粉絲的時(shí)間。(我不知道實(shí)際情況是否如此)。因此,此功能暫時(shí)不可用。
  想到的第二件事是粉絲的分布。條形圖可用于顯示。橫軸為省,縱軸為風(fēng)扇數。新浪提供的api(friendships/followers:獲取用戶(hù)的粉絲列表)可以獲取粉絲所在的省份(.getProvince(),返回一個(gè)數字),然后根據api(common/get省份:獲取列表?。?,就可以得到號碼對應的省的名稱(chēng),所以在前臺得到你要找的微博的名稱(chēng),然后用ext來(lái)繪制地圖。效果如下:
  
 ?。ㄉ蠄D中統計時(shí)間為2012-3-12 9:20 PM,總粉絲數4770)
  開(kāi)發(fā)筆記:
  1. 認證相關(guān):使用OAuth認證。有一個(gè)登錄頁(yè)面 login.jsp 和一個(gè)回調頁(yè)面 index.jsp。在login.jsp中打開(kāi)新浪的認證頁(yè)面,認證成功后跳轉到回調頁(yè)面索引。jsp(需要同時(shí)在應用應用場(chǎng)所和項目中配置回調頁(yè)面,見(jiàn)上一篇博文)。這時(shí)候index.jsp的地址欄中有一個(gè)code值(下一步使用),使用request.getParameter("code")獲取這個(gè)值,然后執行oauth.getAccessTokenByCode(code).getAccessToken () 獲取最重要的accessToken。有了這個(gè)值,認證就被認為是成功的。這個(gè)值基本用于后續調用api,所以存儲在session中(session.setAttribute("accessToken", 訪(fǎng)問(wèn)令牌))。至此,認證成功。但是有一個(gè)問(wèn)題,刷新index.jsp的時(shí)候,會(huì )報錯“error:invalid_grant error_code:21325/oauth2/access_token”,所以改一下,開(kāi)頭先判斷session.getAttribute("accessToken")是否可用index.jsp 的值,如果沒(méi)有認證,如果沒(méi)有操作。這個(gè)改動(dòng)后報錯,報錯是空指針。原來(lái),當用戶(hù)第一次登錄時(shí),會(huì )話(huà)中沒(méi)有accessToken。解決的辦法是加一句session.setAttribute(" to login.jsp.accessToken","")。錯誤是一個(gè)空指針。原來(lái),當用戶(hù)第一次登錄時(shí),會(huì )話(huà)中沒(méi)有accessToken。解決的辦法是加一句session.setAttribute(" to login.jsp.accessToken","")。錯誤是一個(gè)空指針。原來(lái),當用戶(hù)第一次登錄時(shí),會(huì )話(huà)中沒(méi)有accessToken。解決的辦法是加一句session.setAttribute(" to login.jsp.accessToken","")。
  2.friendships/followers 的參數是screen_name(用戶(hù)昵稱(chēng))、count(單頁(yè)返回的記錄條數,默認50條,最大20條0)、cursor(那個(gè)返回結果,默認為0),表示一次只能返回200條記錄,所以需要執行多次,每次執行后可以得到此時(shí)光標的位置根據users.getNextCursor(),得到這個(gè)值,然后作為下一次執行的參數cursor的值,我用的是do-while方法,循環(huán)的條件是users.getNextCursor( ) 不為 0(因為當最后一次執行完成時(shí),users.getNextCursor()=0)。
  3. 如何存儲一個(gè)省的人數:用一個(gè)大小為100的數組a來(lái)存儲一個(gè)省的人數,初始值為0,省代碼為數組編號(例如,北京的省代碼是11,粉絲的省是11點(diǎn),a[11]++)。
  4. 按人數從大到小排序:設置兩個(gè)參數(int big=0 和 int p=-1) 遍歷數組一次,最大的用來(lái)存儲最大值找到了,p用來(lái)存放對應的省份代碼,使用do-while循環(huán),循環(huán)條件p!=-1,時(shí)間復雜度為100*n(人數不為0的省份) .
  5. 省碼轉對應省的方式:common/get Province可以得到省列表,這個(gè)api的參數是country(國家碼),我一開(kāi)始用的是086,結果是都是空的。,然后再根據另一個(gè)接口common/get_country(獲取國家列表)才發(fā)現中國的代碼應該是001(呃...)。在新浪提供的例子中,我沒(méi)有找到獲取省份列表的接口,所以我模仿寫(xiě)了一個(gè),返回值是JSONArray的格式,然后使用json.getString(index)獲取索引組,然后字符串(例如:{"001011","Beijing"})處理并獲取與省號對應的省名。為了減少接口調用次數,
  存在的問(wèn)題:
  1. 更改用戶(hù)昵稱(chēng)點(diǎn)擊查詢(xún),然后在原圖下方生成一張圖片。最好讓原圖消失,然后在這個(gè)位置重新生成新圖。這個(gè)應該是前臺代碼有問(wèn)題。ext應該比較熟悉和熟悉。
  2.friendships/followers 最多返回5000條記錄,所以如果follower超過(guò)5000,只能分析最近5000follower的分布。(馬上就要破五千了啊啊?。?br />   3. 粉絲總數應顯示在圖片或網(wǎng)頁(yè)上
  4.現在速度很慢。4770粉絲號用了20多秒才放出圖片。

使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(新浪微博開(kāi)放平臺APIforWinRT:新浪,人人,街旁等 )

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 60 次瀏覽 ? 2021-12-23 13:24 ? 來(lái)自相關(guān)話(huà)題

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(新浪微博開(kāi)放平臺APIforWinRT:新浪,人人,街旁等
)
  【前言】
  現在各大網(wǎng)站都推出了自己的Web Api,如:新浪、騰訊、人人網(wǎng)、記邊等,這些Web API大多遵循REST架構風(fēng)格,通過(guò)json格式的數據進(jìn)行交互。
  網(wǎng)站 描述接口時(shí)也有示例json數據。我們知道在開(kāi)發(fā)靜態(tài)語(yǔ)言客戶(hù)端的時(shí)候,因為你沒(méi)有這些實(shí)體的定義,所以需要對這些代碼逐行進(jìn)行編碼。
  所以@韋恩NBA 和我(@原數據)在 網(wǎng)站 上使用這些示例 json 開(kāi)發(fā)了這個(gè)框架,以自動(dòng)生成這些定義(實(shí)體類(lèi))以簡(jiǎn)化開(kāi)發(fā)。它包括:t4、RestApiCore、
  OAuthLib、MVVMCommon。項目地址:上網(wǎng)查了一下,新浪沒(méi)有提供winRT下的SDK,所以有如下子項目。
  【新浪微博WinRT開(kāi)放平臺SDK】
  WinRT新浪微博開(kāi)放平臺API是基于新浪微博開(kāi)放平臺第二版API接口封裝的Windows 8平臺軟件開(kāi)發(fā)包(Xaml應用)。
  該SDK幫助.Net平臺開(kāi)發(fā)者在Windows 8移動(dòng)平臺上快速輕松地開(kāi)發(fā)微博相關(guān)應用。
  下載 SDK:
  【特征】
  1. 內置新浪授權頁(yè)面授權流程
  2. 異步編程框架,支持 async/await 關(guān)鍵字(無(wú)回調回調)
  3. 支持新浪微博新版API v2.0
  
  所有API的提示都和網(wǎng)站上的一樣,方便用戶(hù)快速上手。
  
  登錄示例代碼:
  public class LoginViewModel : SinaWeibo_Win8AppStore.Common.BindableBase
{
private const string AppKey = "{your key}";
private const string AppSecret = "{your secret}";
private const string Callback = "{your callbackURL}";
public async Task LoginAsync()
{
var weibo = new SinaWeiboClientV2.WeiboClientV2();
weibo.Initialize(AppKey, AppSecret, Callback);
var json = Windows.Storage.ApplicationData.Current.LocalSettings.Values["AccessToken"] as string;
if (!string.IsNullOrEmpty(json))
{
weibo.AccessToken = await JsonConvert.DeserializeObjectAsync(json);
}

if (weibo.AccessToken == null)
{
// 認證
await weibo.AuthenticateAsync();
}
// 授權
await weibo.AuthorizeAccessAsync(System.Threading.CancellationToken.None);
Windows.Storage.ApplicationData.Current.LocalSettings.Values["AccessToken"] =
await JsonConvert.SerializeObjectAsync(weibo.CurrentAuthToken.ContextData["AccessToken"]);
return weibo;
}
}
  使用 WinRT 的 WebAuthenticationBroker 進(jìn)行應用程序授權。
 ?。ㄏ螺d示例的孩子,不要忘記在你的應用中添加一個(gè)測試賬號,否則臨時(shí)應用的授權將不會(huì )通過(guò))
  
  發(fā)微博示例代碼:
  var request = new SinaWeiboClientV2.StatusesUpdate.Request { Status = this.InputArea.Text };
var response = await Weibo.ExecuteStatusesUpdateAsync(request);
  上傳圖片的示例代碼:
  var fileInfo = new RestAPICore.FileUploadInfo();
fileInfo.LocalPath = ImageFile.Name;
fileInfo.StreamFactory = GetImageFile(ImageFile);
var request = new SinaWeiboClientV2.StatusesUpload.Request
{
Status = this.InputArea.Text,
Pic = fileInfo
};
var response = await Weibo.ExecuteStatusesUploadAsync(request);
  private?async?Task?GetImageFile(StorageFile?file)
{
????var?s?=?await?file.OpenAsync(FileAccessMode.Read);
????return?s.AsStream();
}
  閱讀以下最新微博的示例代碼:
   var response = await Weibo.ExecuteStatusesFriendsTimelineAsync(request);
if (string.IsNullOrEmpty(_maxId))
{
foreach (var item in response.Value.Statuses)
{
_statusFriendsTimeline.Add(item);
}
}
  附上,如何設置測試賬號:
   查看全部

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(新浪微博開(kāi)放平臺APIforWinRT:新浪,人人,街旁等
)
  【前言】
  現在各大網(wǎng)站都推出了自己的Web Api,如:新浪、騰訊、人人網(wǎng)、記邊等,這些Web API大多遵循REST架構風(fēng)格,通過(guò)json格式的數據進(jìn)行交互。
  網(wǎng)站 描述接口時(shí)也有示例json數據。我們知道在開(kāi)發(fā)靜態(tài)語(yǔ)言客戶(hù)端的時(shí)候,因為你沒(méi)有這些實(shí)體的定義,所以需要對這些代碼逐行進(jìn)行編碼。
  所以@韋恩NBA 和我(@原數據)在 網(wǎng)站 上使用這些示例 json 開(kāi)發(fā)了這個(gè)框架,以自動(dòng)生成這些定義(實(shí)體類(lèi))以簡(jiǎn)化開(kāi)發(fā)。它包括:t4、RestApiCore、
  OAuthLib、MVVMCommon。項目地址:上網(wǎng)查了一下,新浪沒(méi)有提供winRT下的SDK,所以有如下子項目。
  【新浪微博WinRT開(kāi)放平臺SDK】
  WinRT新浪微博開(kāi)放平臺API是基于新浪微博開(kāi)放平臺第二版API接口封裝的Windows 8平臺軟件開(kāi)發(fā)包(Xaml應用)。
  該SDK幫助.Net平臺開(kāi)發(fā)者在Windows 8移動(dòng)平臺上快速輕松地開(kāi)發(fā)微博相關(guān)應用。
  下載 SDK:
  【特征】
  1. 內置新浪授權頁(yè)面授權流程
  2. 異步編程框架,支持 async/await 關(guān)鍵字(無(wú)回調回調)
  3. 支持新浪微博新版API v2.0
  
  所有API的提示都和網(wǎng)站上的一樣,方便用戶(hù)快速上手。
  
  登錄示例代碼:
  public class LoginViewModel : SinaWeibo_Win8AppStore.Common.BindableBase
{
private const string AppKey = "{your key}";
private const string AppSecret = "{your secret}";
private const string Callback = "{your callbackURL}";
public async Task LoginAsync()
{
var weibo = new SinaWeiboClientV2.WeiboClientV2();
weibo.Initialize(AppKey, AppSecret, Callback);
var json = Windows.Storage.ApplicationData.Current.LocalSettings.Values["AccessToken"] as string;
if (!string.IsNullOrEmpty(json))
{
weibo.AccessToken = await JsonConvert.DeserializeObjectAsync(json);
}

if (weibo.AccessToken == null)
{
// 認證
await weibo.AuthenticateAsync();
}
// 授權
await weibo.AuthorizeAccessAsync(System.Threading.CancellationToken.None);
Windows.Storage.ApplicationData.Current.LocalSettings.Values["AccessToken"] =
await JsonConvert.SerializeObjectAsync(weibo.CurrentAuthToken.ContextData["AccessToken"]);
return weibo;
}
}
  使用 WinRT 的 WebAuthenticationBroker 進(jìn)行應用程序授權。
 ?。ㄏ螺d示例的孩子,不要忘記在你的應用中添加一個(gè)測試賬號,否則臨時(shí)應用的授權將不會(huì )通過(guò))
  
  發(fā)微博示例代碼:
  var request = new SinaWeiboClientV2.StatusesUpdate.Request { Status = this.InputArea.Text };
var response = await Weibo.ExecuteStatusesUpdateAsync(request);
  上傳圖片的示例代碼:
  var fileInfo = new RestAPICore.FileUploadInfo();
fileInfo.LocalPath = ImageFile.Name;
fileInfo.StreamFactory = GetImageFile(ImageFile);
var request = new SinaWeiboClientV2.StatusesUpload.Request
{
Status = this.InputArea.Text,
Pic = fileInfo
};
var response = await Weibo.ExecuteStatusesUploadAsync(request);
  private?async?Task?GetImageFile(StorageFile?file)
{
????var?s?=?await?file.OpenAsync(FileAccessMode.Read);
????return?s.AsStream();
}
  閱讀以下最新微博的示例代碼:
   var response = await Weibo.ExecuteStatusesFriendsTimelineAsync(request);
if (string.IsNullOrEmpty(_maxId))
{
foreach (var item in response.Value.Statuses)
{
_statusFriendsTimeline.Add(item);
}
}
  附上,如何設置測試賬號:
  

使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(一個(gè)自動(dòng)發(fā)布新浪微博的機器人(圖)分享(組圖))

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 76 次瀏覽 ? 2021-12-21 21:07 ? 來(lái)自相關(guān)話(huà)題

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(一個(gè)自動(dòng)發(fā)布新浪微博的機器人(圖)分享(組圖))
  最近在研究使用Python制作各種類(lèi)型的機器人。今天給大家分享一個(gè)自動(dòng)發(fā)布新浪微博的機器人。
  基本思想
  其實(shí)實(shí)現一個(gè)簡(jiǎn)單的自動(dòng)發(fā)布微博的微博機器人并不難。你只需要每天準時(shí)找到要發(fā)布的素材(一般是爬蟲(chóng)),然后通過(guò)微博開(kāi)放的API接口自動(dòng)發(fā)布。
  材料
  材料方面,我選擇了金山詞霸的每日一句。我們可以抓取這個(gè)網(wǎng)站的相關(guān)信息來(lái)組成我們的微博素材。
  微博接口
  微博為開(kāi)發(fā)者提供開(kāi)放平臺
  當然,在使用這個(gè)平臺之前,我們仍然需要注冊并創(chuàng )建一個(gè)應用程序。比如像我一樣,創(chuàng )建一個(gè)應用程序
  
  然后我們還需要設置一個(gè)安全域名(以后發(fā)布微博時(shí)會(huì )用到),在應用信息-&gt;基本信息中設置。
  
  還需要設置應用回調地址,在應用信息-&gt;高級信息中設置。
  
  當然,對于微博API的調用,我們可以使用別人打包的第三方庫,操作起來(lái)更方便。這里我使用了一個(gè)名為“weibo”的庫,直接使用pip安裝。
  pip 安裝微博
  但是我遇到了一個(gè)安裝問(wèn)題,錯誤如下
  Traceback (most recent call last):
File "setup.py", line 15, in
long_description=open('README.rst').read(),
UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 241: illegal multibyte sequence
  好像是編碼問(wèn)題,我們可以通過(guò)修改源代碼來(lái)規避
  
  long_description=open('README.rst', encoding='utf-8').read(),
  python setup.py build
python setup.py install
  至此就可以成功安裝微博庫了
  準備工作和寫(xiě)作思路就是這些,下面我們來(lái)看看具體的過(guò)程和代碼
  Python自動(dòng)發(fā)布微博
  根據微博庫的文檔,操作微博還是比較好用的。您只需要在我們創(chuàng )建微博應用時(shí)提供App Key和App Secret以及應用回調地址信息即可。簡(jiǎn)單的調用代碼如下
  from weibo import Client
c = Client('App Key', 'App Secret', 'https://www.luobodazahui.top', username='username', password='password')
c.post('statuses/share', status='haha' + 安全域名)
  我們運行代碼,如果沒(méi)有任何反應,我們將可以在該帳戶(hù)下的微博中看到剛剛發(fā)布的微博。
  
  最簡(jiǎn)單的微博已經(jīng)發(fā)布成功了,那么我們可以發(fā)布帶圖片的微博,我們試試吧
  根據接口status/share的文檔,我們可以傳入pic參數來(lái)上傳圖片
  
  我們傳入 pic 參數并嘗試
  f = open('4.png', 'rb')
c.post('statuses/share', status='haha' + 安全域名, pic=f)
f.close()
  是的,它可以正常發(fā)布帶圖片的微博
  
  那么現在微博的自動(dòng)發(fā)布就完成了,下面我們來(lái)看看如何自動(dòng)獲取微博素材
  微博素材
  對于金山詞霸的每日一句,我們可以使用以下API獲取每日信息
  可以看到界面返回如下信息
  
  我們可以直接使用requests庫來(lái)調用這個(gè)接口
  import requests
url = 'http://open.iciba.com/dsapi/'
res = requests.get(url)
content_e = res.json()['content']
content_c = res.json()['note']
content = content_e + 'n' + content_c
content_t = res.json()['picture2']
  現在我們封裝兩個(gè)函數來(lái)完成功能
  def weibo(content, picture):
ff = requests.get(picture).content
c = Client(app_key, app_secret, 'https://www.luobodazahui.top', username=username, password=password)
c.post('statuses/share', status=content + 'https://www.luobodazahui.com', pic=ff)
def auto_weibo():
url = 'http://open.iciba.com/dsapi/'
res = requests.get(url)
content_e = res.json()['content']
content_c = res.json()['note']
content = content_e + 'n' + content_c
content_t = res.json()['picture2']
weibo(content, content_t)
return 'OK'
  現在我們可以創(chuàng )建一個(gè)定時(shí)任務(wù),每天7點(diǎn)運行腳本。
  0 7 * * * python auto_weibo.py
  最終效果如下
  
  免責聲明:本文來(lái)自匯火官方原創(chuàng ),如轉載請注明出處: 查看全部

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(一個(gè)自動(dòng)發(fā)布新浪微博的機器人(圖)分享(組圖))
  最近在研究使用Python制作各種類(lèi)型的機器人。今天給大家分享一個(gè)自動(dòng)發(fā)布新浪微博的機器人。
  基本思想
  其實(shí)實(shí)現一個(gè)簡(jiǎn)單的自動(dòng)發(fā)布微博的微博機器人并不難。你只需要每天準時(shí)找到要發(fā)布的素材(一般是爬蟲(chóng)),然后通過(guò)微博開(kāi)放的API接口自動(dòng)發(fā)布。
  材料
  材料方面,我選擇了金山詞霸的每日一句。我們可以抓取這個(gè)網(wǎng)站的相關(guān)信息來(lái)組成我們的微博素材。
  微博接口
  微博為開(kāi)發(fā)者提供開(kāi)放平臺
  當然,在使用這個(gè)平臺之前,我們仍然需要注冊并創(chuàng )建一個(gè)應用程序。比如像我一樣,創(chuàng )建一個(gè)應用程序
  
  然后我們還需要設置一個(gè)安全域名(以后發(fā)布微博時(shí)會(huì )用到),在應用信息-&gt;基本信息中設置。
  
  還需要設置應用回調地址,在應用信息-&gt;高級信息中設置。
  
  當然,對于微博API的調用,我們可以使用別人打包的第三方庫,操作起來(lái)更方便。這里我使用了一個(gè)名為“weibo”的庫,直接使用pip安裝。
  pip 安裝微博
  但是我遇到了一個(gè)安裝問(wèn)題,錯誤如下
  Traceback (most recent call last):
File "setup.py", line 15, in
long_description=open('README.rst').read(),
UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 241: illegal multibyte sequence
  好像是編碼問(wèn)題,我們可以通過(guò)修改源代碼來(lái)規避
  
  long_description=open('README.rst', encoding='utf-8').read(),
  python setup.py build
python setup.py install
  至此就可以成功安裝微博庫了
  準備工作和寫(xiě)作思路就是這些,下面我們來(lái)看看具體的過(guò)程和代碼
  Python自動(dòng)發(fā)布微博
  根據微博庫的文檔,操作微博還是比較好用的。您只需要在我們創(chuàng )建微博應用時(shí)提供App Key和App Secret以及應用回調地址信息即可。簡(jiǎn)單的調用代碼如下
  from weibo import Client
c = Client('App Key', 'App Secret', 'https://www.luobodazahui.top', username='username', password='password')
c.post('statuses/share', status='haha' + 安全域名)
  我們運行代碼,如果沒(méi)有任何反應,我們將可以在該帳戶(hù)下的微博中看到剛剛發(fā)布的微博。
  
  最簡(jiǎn)單的微博已經(jīng)發(fā)布成功了,那么我們可以發(fā)布帶圖片的微博,我們試試吧
  根據接口status/share的文檔,我們可以傳入pic參數來(lái)上傳圖片
  
  我們傳入 pic 參數并嘗試
  f = open('4.png', 'rb')
c.post('statuses/share', status='haha' + 安全域名, pic=f)
f.close()
  是的,它可以正常發(fā)布帶圖片的微博
  
  那么現在微博的自動(dòng)發(fā)布就完成了,下面我們來(lái)看看如何自動(dòng)獲取微博素材
  微博素材
  對于金山詞霸的每日一句,我們可以使用以下API獲取每日信息
  可以看到界面返回如下信息
  
  我們可以直接使用requests庫來(lái)調用這個(gè)接口
  import requests
url = 'http://open.iciba.com/dsapi/'
res = requests.get(url)
content_e = res.json()['content']
content_c = res.json()['note']
content = content_e + 'n' + content_c
content_t = res.json()['picture2']
  現在我們封裝兩個(gè)函數來(lái)完成功能
  def weibo(content, picture):
ff = requests.get(picture).content
c = Client(app_key, app_secret, 'https://www.luobodazahui.top', username=username, password=password)
c.post('statuses/share', status=content + 'https://www.luobodazahui.com', pic=ff)
def auto_weibo():
url = 'http://open.iciba.com/dsapi/'
res = requests.get(url)
content_e = res.json()['content']
content_c = res.json()['note']
content = content_e + 'n' + content_c
content_t = res.json()['picture2']
weibo(content, content_t)
return 'OK'
  現在我們可以創(chuàng )建一個(gè)定時(shí)任務(wù),每天7點(diǎn)運行腳本。
  0 7 * * * python auto_weibo.py
  最終效果如下
  
  免責聲明:本文來(lái)自匯火官方原創(chuàng ),如轉載請注明出處:

使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(關(guān)于新浪微博爬蟲(chóng)的一些事兒,你知道嗎? )

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 57 次瀏覽 ? 2021-12-21 21:05 ? 來(lái)自相關(guān)話(huà)題

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(關(guān)于新浪微博爬蟲(chóng)的一些事兒,你知道嗎?
)
  最近和孫承杰老師在NLP實(shí)驗室做了一些事情。我打算結合新浪微博的用戶(hù)數據,基于文章的“多標簽分類(lèi)”算法,看看實(shí)驗的效果。于是找了一些關(guān)于新浪微博爬蟲(chóng)的資料,整理如下:
  (一)模擬登錄新浪微博(Python)(使用python程序獲取cookie登錄)
  更新:如果只是寫(xiě)個(gè)小爬蟲(chóng),訪(fǎng)問(wèn)需要登錄的頁(yè)面,使用填cookies的方法,簡(jiǎn)單粗暴有效。有關(guān)詳細信息,請參閱:
  模擬登錄有時(shí)需要了解js加密(散列)方法、輸入驗證方法等,同一段代碼很難一直有效。
  文本:
  PC登錄新浪微博時(shí),用戶(hù)名和密碼在客戶(hù)端用js進(jìn)行了預加密,POST前會(huì )GET一組參數,也是POST_DATA的一部分。這樣就不能用通常的簡(jiǎn)單方法來(lái)模擬POST登錄(如人人網(wǎng))。
  由于部分要使用的微博數據不方便通過(guò)API獲取,所以還是要自己寫(xiě)一個(gè)小爬蟲(chóng),模擬登錄是必不可少的。想了想這件事,最后還是登錄成功了。
  1、在提交POST請求之前,需要GET獲取兩個(gè)參數。
  地址為:(v1.3.18)
  得到的數據中收錄了“servertime”和“nonce”的值,是隨機的,其他的值好像沒(méi)什么用。
  2、通過(guò)httpfox觀(guān)察POST數據,參數比較復雜,其中“su”為加密用戶(hù)名,“sp”為加密密碼?!皊ervertime”和“nonce”是從上一步獲得的。其他參數不變。
  username 經(jīng)過(guò)了BASE64 計算: username = base64.encodestring( urllib.quote(username) )[:-1];
password 經(jīng)過(guò)了三次SHA1 加密, 且其中加入了 servertime 和 nonce 的值來(lái)干擾。
即: 兩次SHA1加密后, 將結果加上 servertime 和 nonce 的值, 再SHA1 算一次。
將參數組織好, POST請求。 這之后還沒(méi)有登錄成功。
POST后得到的內容中包含一句 location.replace("http://weibo.com/ajaxlogin.php ... 6quot;);
  這是登錄失敗時(shí)的結果。登錄成功后的結果類(lèi)似,只是retcode的值為0,然后再次請求這個(gè)網(wǎng)址,這樣就可以成功登錄微博了。
  記得提前構建緩存。
  以下是完整代碼(不做注釋?zhuān)黄饋?lái)看看):
  #! /usr/bin/env python
#coding=utf8
import urllib
import urllib2
import cookielib
import base64
import re
import json
import hashlib
cj = cookielib.LWPCookieJar()
cookie_support = urllib2.HTTPCookieProcessor(cj)
opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler)
urllib2.install_opener(opener)
postdata = {
\'entry\': \'weibo\',
\'gateway\': \'1\',
\'from\': \'\',
\'savestate\': \'7\',
\'userticket\': \'1\',
\'ssosimplelogin\': \'1\',
\'vsnf\': \'1\',
\'vsnval\': \'\',
\'su\': \'\',
\'service\': \'miniblog\',
\'servertime\': \'\',
\'nonce\': \'\',
\'pwencode\': \'wsse\',
\'sp\': \'\',
\'encoding\': \'UTF-8\',
\'url\': \'http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack\',
\'returntype\': \'META\'
}
def get_servertime():
url = \'http://login.sina.com.cn/sso/prelogin.php?entry=weibo&callback=sinaSSOController.preloginCallBack&su=dW5kZWZpbmVk&client=ssologin.js(v1.3.18)&_=1329806375939\'
data = urllib2.urlopen(url).read()
p = re.compile(\'\((.*)\)\')
try:
json_data = p.search(data).group(1)
data = json.loads(json_data)
servertime = str(data[\'servertime\'])
nonce = data[\'nonce\']
return servertime, nonce
except:
print \'Get severtime error!\'
return None
def get_pwd(pwd, servertime, nonce):
pwd1 = hashlib.sha1(pwd).hexdigest()
pwd2 = hashlib.sha1(pwd1).hexdigest()
pwd3_ = pwd2 + servertime + nonce
pwd3 = hashlib.sha1(pwd3_).hexdigest()
return pwd3
def get_user(username):
username_ = urllib.quote(username)
username = base64.encodestring(username_)[:-1]
return username
def login():
username = \'你的登錄郵箱\'
pwd = \'你的密碼\'
url = \'http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.3.18)\'
try:
servertime, nonce = get_servertime()
except:
return
global postdata
postdata[\'servertime\'] = servertime
postdata[\'nonce\'] = nonce
postdata[\'su\'] = get_user(username)
postdata[\'sp\'] = get_pwd(pwd, servertime, nonce)
postdata = urllib.urlencode(postdata)
headers = {\'User-Agent\':\'Mozilla/5.0 (X11; Linux i686; rv:8.0) Gecko/20100101 Firefox/8.0\'}
req = urllib2.Request(
url = url,
data = postdata,
headers = headers
)
result = urllib2.urlopen(req)
text = result.read()
p = re.compile(\'location\.replace\(\\'(.*?)\\'\)\')
try:
login_url = p.search(text).group(1)
#print login_url
urllib2.urlopen(login_url)
print "登錄成功!"
except:
print \'Login error!\'
login()
  (二)模擬登錄新浪微博(直接填寫(xiě)Cookie)
  之前寫(xiě)過(guò)一個(gè)模擬登錄新浪微博,使用POST用戶(hù)名/密碼參數(加密)并保存Cookies來(lái)模擬登錄。
  一般情況下,為了保證安全,網(wǎng)站會(huì )定期更新登錄細節,比如修改參數名,更新加密(散列)算法等,所以模擬登錄的代碼肯定會(huì )周期性的失敗,但是如果網(wǎng)站 沒(méi)有進(jìn)行大的更新,稍微修改一下還是可以使用的。此外,驗證碼的處理難度更大。雖然該程序在一定程度上可以識別驗證碼字符,但目前還很難找到一個(gè)簡(jiǎn)單通用的驗證碼識別程序。
  很多豆友反映,他們需要模擬登錄新浪微博來(lái)抓取數據。事實(shí)上,對于一般的微博數據獲取,比如用戶(hù)信息、微博內容等,使用微博開(kāi)放平臺API是更明智的選擇:速度更快,并且在網(wǎng)頁(yè)處理上節省大量精力。對于沒(méi)有對API開(kāi)放的數據,我們再采用模擬登錄的方式。
  熟悉網(wǎng)絡(luò )的朋友只要定期維護模擬登錄的代碼就可以成功登錄微博。如果你不是很熟悉,其實(shí)可以用更幼稚的方法來(lái)解決:直接將Cookie發(fā)送到新浪微博,實(shí)現模擬登錄。
  1. 獲取餅干
  這很簡(jiǎn)單。您可以通過(guò)Chrome瀏覽器的“開(kāi)發(fā)者工具”或火狐瀏覽器的“HTTPFOX”等插件直接查看您的新浪微博cookies。(注意:不要泄露這個(gè)私人Cookie?。?br />   比如Chrome查看cookie(快捷鍵F12可以調出chrome開(kāi)發(fā)者工具)
  鍍鉻餅干
  鍍鉻餅干
  
  2. 提交Cookie作為訪(fǎng)問(wèn)微博的header參數
  headers = {\'cookie\': \'你的 cookie\'}
  req = urllib2.Request(url, headers=headers) #每次訪(fǎng)問(wèn)頁(yè)面時(shí),帶上headers參數
  r = urllib2.urlopen(req)
  具體代碼見(jiàn):
 ?。ㄈ┒啻赖腸ookie問(wèn)題,最后還是自己解決了...
  我不太了解HTTP中的協(xié)議和東西,但我知道有這樣的東西。是時(shí)候閱讀《HTTP 權威指南》這本書(shū)了,以免...
  同學(xué)說(shuō)可以用cookies登錄人人網(wǎng)、微博什么的,他是網(wǎng)絡(luò )安全高手,黑客類(lèi),我這方面菜鳥(niǎo),所以很想試試。
  網(wǎng)上找了很多資源,包括模擬登錄新浪微博(直接填寫(xiě)Cookie)
  我知道在哪里可以找到 cookie,就像這樣(我使用 chrome)
  
  點(diǎn)擊進(jìn)去,它看起來(lái)像這樣
  
  不,這個(gè)想法是靈活的??隙ㄊ谴蜷_(kāi)方式不對……所以,打開(kāi)F12,打開(kāi)瀏覽器控制臺,查看網(wǎng)絡(luò )頁(yè)面,像這樣:
  
  趕快去地址輸入網(wǎng)址吧??!我們會(huì )發(fā)現很多東西經(jīng)過(guò)
  
  看到了,是藍色的東西,復制粘貼,粘貼到代碼里,就好了
  
  最后,抓取ajax
  (四)使用python實(shí)現新浪微博爬蟲(chóng)
  接下來(lái)考慮爬取微博內容的實(shí)現。
  這時(shí),我遇到了困難。當我抓取指定網(wǎng)址的微博時(shí),最初只顯示了15條。后者是延遲顯示(在ajax中稱(chēng)為延遲加載?)。也就是說(shuō),當滾動(dòng)條第一次拖到底部時(shí),會(huì )顯示第二部分,然后再拖到底部,會(huì )顯示第三部分。此時(shí),一個(gè)頁(yè)面的微博就完成了。因此,要獲取一個(gè)微博頁(yè)面的所有微博,需要訪(fǎng)問(wèn)該頁(yè)面3次。創(chuàng )建getWeiboPage.py文件,對應代碼如下:
  #!/usr/bin/env python
# -*- coding: utf-8 -*-

import urllib
import urllib2
import sys
import time

reload(sys)
sys.setdefaultencoding(\'utf-8\')

class getWeiboPage:
body = {
\'__rnd\':\'\',
\'_k\':\'\',
\'_t\':\'0\',
\'count\':\'50\',
\'end_id\':\'\',
\'max_id\':\'\',
\'page\':1,
\'pagebar\':\'\',
\'pre_page\':\'0\',
\'uid\':\'\'
}
uid_list = []
charset = \'utf8\'

def get_msg(self,uid):
getWeiboPage.body[\'uid\'] = uid
url = self.get_url(uid)
self.get_firstpage(url)
self.get_secondpage(url)
self.get_thirdpage(url)
def get_firstpage(self,url):
getWeiboPage.body[\'pre_page\'] = getWeiboPage.body[\'page\']-1
url = url +urllib.urlencode(getWeiboPage.body)
req = urllib2.Request(url)
result = urllib2.urlopen(req)
text = result.read()
self.writefile(\'./output/text1\',text)
self.writefile(\'./output/result1\',eval("u\'\'\'"+text+"\'\'\'"))

def get_secondpage(self,url):
getWeiboPage.body[\'count\'] = \'15\'
# getWeiboPage.body[\'end_id\'] = \'3490160379905732\'
# getWeiboPage.body[\'max_id\'] = \'3487344294660278\'
getWeiboPage.body[\'pagebar\'] = \'0\'
getWeiboPage.body[\'pre_page\'] = getWeiboPage.body[\'page\']

url = url +urllib.urlencode(getWeiboPage.body)
req = urllib2.Request(url)
result = urllib2.urlopen(req)
text = result.read()
self.writefile(\'./output/text2\',text)
self.writefile(\'./output/result2\',eval("u\'\'\'"+text+"\'\'\'"))
def get_thirdpage(self,url):
getWeiboPage.body[\'count\'] = \'15\'
getWeiboPage.body[\'pagebar\'] = \'1\'
getWeiboPage.body[\'pre_page\'] = getWeiboPage.body[\'page\']

url = url +urllib.urlencode(getWeiboPage.body)
req = urllib2.Request(url)
result = urllib2.urlopen(req)
text = result.read()
self.writefile(\'./output/text3\',text)
self.writefile(\'./output/result3\',eval("u\'\'\'"+text+"\'\'\'"))
def get_url(self,uid):
url = \'http://weibo.com/\' + uid + \'?from=otherprofile&wvr=3.6&loc=tagweibo\'
return url
def get_uid(self,filename):
fread = file(filename)
for line in fread:
getWeiboPage.uid_list.append(line)
print line
time.sleep(1)
def writefile(self,filename,content):
fw = file(filename,\'w\')
fw.write(content)
fw.close() 查看全部

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(關(guān)于新浪微博爬蟲(chóng)的一些事兒,你知道嗎?
)
  最近和孫承杰老師在NLP實(shí)驗室做了一些事情。我打算結合新浪微博的用戶(hù)數據,基于文章的“多標簽分類(lèi)”算法,看看實(shí)驗的效果。于是找了一些關(guān)于新浪微博爬蟲(chóng)的資料,整理如下:
  (一)模擬登錄新浪微博(Python)(使用python程序獲取cookie登錄)
  更新:如果只是寫(xiě)個(gè)小爬蟲(chóng),訪(fǎng)問(wèn)需要登錄的頁(yè)面,使用填cookies的方法,簡(jiǎn)單粗暴有效。有關(guān)詳細信息,請參閱:
  模擬登錄有時(shí)需要了解js加密(散列)方法、輸入驗證方法等,同一段代碼很難一直有效。
  文本:
  PC登錄新浪微博時(shí),用戶(hù)名和密碼在客戶(hù)端用js進(jìn)行了預加密,POST前會(huì )GET一組參數,也是POST_DATA的一部分。這樣就不能用通常的簡(jiǎn)單方法來(lái)模擬POST登錄(如人人網(wǎng))。
  由于部分要使用的微博數據不方便通過(guò)API獲取,所以還是要自己寫(xiě)一個(gè)小爬蟲(chóng),模擬登錄是必不可少的。想了想這件事,最后還是登錄成功了。
  1、在提交POST請求之前,需要GET獲取兩個(gè)參數。
  地址為:(v1.3.18)
  得到的數據中收錄了“servertime”和“nonce”的值,是隨機的,其他的值好像沒(méi)什么用。
  2、通過(guò)httpfox觀(guān)察POST數據,參數比較復雜,其中“su”為加密用戶(hù)名,“sp”為加密密碼?!皊ervertime”和“nonce”是從上一步獲得的。其他參數不變。
  username 經(jīng)過(guò)了BASE64 計算: username = base64.encodestring( urllib.quote(username) )[:-1];
password 經(jīng)過(guò)了三次SHA1 加密, 且其中加入了 servertime 和 nonce 的值來(lái)干擾。
即: 兩次SHA1加密后, 將結果加上 servertime 和 nonce 的值, 再SHA1 算一次。
將參數組織好, POST請求。 這之后還沒(méi)有登錄成功。
POST后得到的內容中包含一句 location.replace("http://weibo.com/ajaxlogin.php ... 6quot;);
  這是登錄失敗時(shí)的結果。登錄成功后的結果類(lèi)似,只是retcode的值為0,然后再次請求這個(gè)網(wǎng)址,這樣就可以成功登錄微博了。
  記得提前構建緩存。
  以下是完整代碼(不做注釋?zhuān)黄饋?lái)看看):
  #! /usr/bin/env python
#coding=utf8
import urllib
import urllib2
import cookielib
import base64
import re
import json
import hashlib
cj = cookielib.LWPCookieJar()
cookie_support = urllib2.HTTPCookieProcessor(cj)
opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler)
urllib2.install_opener(opener)
postdata = {
\'entry\': \'weibo\',
\'gateway\': \'1\',
\'from\': \'\',
\'savestate\': \'7\',
\'userticket\': \'1\',
\'ssosimplelogin\': \'1\',
\'vsnf\': \'1\',
\'vsnval\': \'\',
\'su\': \'\',
\'service\': \'miniblog\',
\'servertime\': \'\',
\'nonce\': \'\',
\'pwencode\': \'wsse\',
\'sp\': \'\',
\'encoding\': \'UTF-8\',
\'url\': \'http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack\',
\'returntype\': \'META\'
}
def get_servertime():
url = \'http://login.sina.com.cn/sso/prelogin.php?entry=weibo&callback=sinaSSOController.preloginCallBack&su=dW5kZWZpbmVk&client=ssologin.js(v1.3.18)&_=1329806375939\'
data = urllib2.urlopen(url).read()
p = re.compile(\'\((.*)\)\')
try:
json_data = p.search(data).group(1)
data = json.loads(json_data)
servertime = str(data[\'servertime\'])
nonce = data[\'nonce\']
return servertime, nonce
except:
print \'Get severtime error!\'
return None
def get_pwd(pwd, servertime, nonce):
pwd1 = hashlib.sha1(pwd).hexdigest()
pwd2 = hashlib.sha1(pwd1).hexdigest()
pwd3_ = pwd2 + servertime + nonce
pwd3 = hashlib.sha1(pwd3_).hexdigest()
return pwd3
def get_user(username):
username_ = urllib.quote(username)
username = base64.encodestring(username_)[:-1]
return username
def login():
username = \'你的登錄郵箱\'
pwd = \'你的密碼\'
url = \'http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.3.18)\'
try:
servertime, nonce = get_servertime()
except:
return
global postdata
postdata[\'servertime\'] = servertime
postdata[\'nonce\'] = nonce
postdata[\'su\'] = get_user(username)
postdata[\'sp\'] = get_pwd(pwd, servertime, nonce)
postdata = urllib.urlencode(postdata)
headers = {\'User-Agent\':\'Mozilla/5.0 (X11; Linux i686; rv:8.0) Gecko/20100101 Firefox/8.0\'}
req = urllib2.Request(
url = url,
data = postdata,
headers = headers
)
result = urllib2.urlopen(req)
text = result.read()
p = re.compile(\'location\.replace\(\\'(.*?)\\'\)\')
try:
login_url = p.search(text).group(1)
#print login_url
urllib2.urlopen(login_url)
print "登錄成功!"
except:
print \'Login error!\'
login()
  (二)模擬登錄新浪微博(直接填寫(xiě)Cookie)
  之前寫(xiě)過(guò)一個(gè)模擬登錄新浪微博,使用POST用戶(hù)名/密碼參數(加密)并保存Cookies來(lái)模擬登錄。
  一般情況下,為了保證安全,網(wǎng)站會(huì )定期更新登錄細節,比如修改參數名,更新加密(散列)算法等,所以模擬登錄的代碼肯定會(huì )周期性的失敗,但是如果網(wǎng)站 沒(méi)有進(jìn)行大的更新,稍微修改一下還是可以使用的。此外,驗證碼的處理難度更大。雖然該程序在一定程度上可以識別驗證碼字符,但目前還很難找到一個(gè)簡(jiǎn)單通用的驗證碼識別程序。
  很多豆友反映,他們需要模擬登錄新浪微博來(lái)抓取數據。事實(shí)上,對于一般的微博數據獲取,比如用戶(hù)信息、微博內容等,使用微博開(kāi)放平臺API是更明智的選擇:速度更快,并且在網(wǎng)頁(yè)處理上節省大量精力。對于沒(méi)有對API開(kāi)放的數據,我們再采用模擬登錄的方式。
  熟悉網(wǎng)絡(luò )的朋友只要定期維護模擬登錄的代碼就可以成功登錄微博。如果你不是很熟悉,其實(shí)可以用更幼稚的方法來(lái)解決:直接將Cookie發(fā)送到新浪微博,實(shí)現模擬登錄。
  1. 獲取餅干
  這很簡(jiǎn)單。您可以通過(guò)Chrome瀏覽器的“開(kāi)發(fā)者工具”或火狐瀏覽器的“HTTPFOX”等插件直接查看您的新浪微博cookies。(注意:不要泄露這個(gè)私人Cookie?。?br />   比如Chrome查看cookie(快捷鍵F12可以調出chrome開(kāi)發(fā)者工具)
  鍍鉻餅干
  鍍鉻餅干
  
  2. 提交Cookie作為訪(fǎng)問(wèn)微博的header參數
  headers = {\'cookie\': \'你的 cookie\'}
  req = urllib2.Request(url, headers=headers) #每次訪(fǎng)問(wèn)頁(yè)面時(shí),帶上headers參數
  r = urllib2.urlopen(req)
  具體代碼見(jiàn):
 ?。ㄈ┒啻赖腸ookie問(wèn)題,最后還是自己解決了...
  我不太了解HTTP中的協(xié)議和東西,但我知道有這樣的東西。是時(shí)候閱讀《HTTP 權威指南》這本書(shū)了,以免...
  同學(xué)說(shuō)可以用cookies登錄人人網(wǎng)、微博什么的,他是網(wǎng)絡(luò )安全高手,黑客類(lèi),我這方面菜鳥(niǎo),所以很想試試。
  網(wǎng)上找了很多資源,包括模擬登錄新浪微博(直接填寫(xiě)Cookie)
  我知道在哪里可以找到 cookie,就像這樣(我使用 chrome)
  
  點(diǎn)擊進(jìn)去,它看起來(lái)像這樣
  
  不,這個(gè)想法是靈活的??隙ㄊ谴蜷_(kāi)方式不對……所以,打開(kāi)F12,打開(kāi)瀏覽器控制臺,查看網(wǎng)絡(luò )頁(yè)面,像這樣:
  
  趕快去地址輸入網(wǎng)址吧??!我們會(huì )發(fā)現很多東西經(jīng)過(guò)
  
  看到了,是藍色的東西,復制粘貼,粘貼到代碼里,就好了
  
  最后,抓取ajax
  (四)使用python實(shí)現新浪微博爬蟲(chóng)
  接下來(lái)考慮爬取微博內容的實(shí)現。
  這時(shí),我遇到了困難。當我抓取指定網(wǎng)址的微博時(shí),最初只顯示了15條。后者是延遲顯示(在ajax中稱(chēng)為延遲加載?)。也就是說(shuō),當滾動(dòng)條第一次拖到底部時(shí),會(huì )顯示第二部分,然后再拖到底部,會(huì )顯示第三部分。此時(shí),一個(gè)頁(yè)面的微博就完成了。因此,要獲取一個(gè)微博頁(yè)面的所有微博,需要訪(fǎng)問(wèn)該頁(yè)面3次。創(chuàng )建getWeiboPage.py文件,對應代碼如下:
  #!/usr/bin/env python
# -*- coding: utf-8 -*-

import urllib
import urllib2
import sys
import time

reload(sys)
sys.setdefaultencoding(\'utf-8\')

class getWeiboPage:
body = {
\'__rnd\':\'\',
\'_k\':\'\',
\'_t\':\'0\',
\'count\':\'50\',
\'end_id\':\'\',
\'max_id\':\'\',
\'page\':1,
\'pagebar\':\'\',
\'pre_page\':\'0\',
\'uid\':\'\'
}
uid_list = []
charset = \'utf8\'

def get_msg(self,uid):
getWeiboPage.body[\'uid\'] = uid
url = self.get_url(uid)
self.get_firstpage(url)
self.get_secondpage(url)
self.get_thirdpage(url)
def get_firstpage(self,url):
getWeiboPage.body[\'pre_page\'] = getWeiboPage.body[\'page\']-1
url = url +urllib.urlencode(getWeiboPage.body)
req = urllib2.Request(url)
result = urllib2.urlopen(req)
text = result.read()
self.writefile(\'./output/text1\',text)
self.writefile(\'./output/result1\',eval("u\'\'\'"+text+"\'\'\'"))

def get_secondpage(self,url):
getWeiboPage.body[\'count\'] = \'15\'
# getWeiboPage.body[\'end_id\'] = \'3490160379905732\'
# getWeiboPage.body[\'max_id\'] = \'3487344294660278\'
getWeiboPage.body[\'pagebar\'] = \'0\'
getWeiboPage.body[\'pre_page\'] = getWeiboPage.body[\'page\']

url = url +urllib.urlencode(getWeiboPage.body)
req = urllib2.Request(url)
result = urllib2.urlopen(req)
text = result.read()
self.writefile(\'./output/text2\',text)
self.writefile(\'./output/result2\',eval("u\'\'\'"+text+"\'\'\'"))
def get_thirdpage(self,url):
getWeiboPage.body[\'count\'] = \'15\'
getWeiboPage.body[\'pagebar\'] = \'1\'
getWeiboPage.body[\'pre_page\'] = getWeiboPage.body[\'page\']

url = url +urllib.urlencode(getWeiboPage.body)
req = urllib2.Request(url)
result = urllib2.urlopen(req)
text = result.read()
self.writefile(\'./output/text3\',text)
self.writefile(\'./output/result3\',eval("u\'\'\'"+text+"\'\'\'"))
def get_url(self,uid):
url = \'http://weibo.com/\' + uid + \'?from=otherprofile&wvr=3.6&loc=tagweibo\'
return url
def get_uid(self,filename):
fread = file(filename)
for line in fread:
getWeiboPage.uid_list.append(line)
print line
time.sleep(1)
def writefile(self,filename,content):
fw = file(filename,\'w\')
fw.write(content)
fw.close()

使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站或服務(wù)器端)

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 66 次瀏覽 ? 2021-12-21 12:02 ? 來(lái)自相關(guān)話(huà)題

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站或服務(wù)器端)
  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站或服務(wù)器端,然后對網(wǎng)站或服務(wù)器進(jìn)行二次開(kāi)發(fā)(seo,權重提升,轉發(fā)等)。如果網(wǎng)站或服務(wù)器使用了新浪微博商業(yè)服務(wù)(如,用來(lái)直接發(fā)廣告),那么可以做個(gè)jsonxml接口進(jìn)行實(shí)時(shí)推送。
  直接上阿里云購買(mǎi)微博服務(wù)器。賣(mài)家會(huì )給你一個(gè)配置文件。例如這個(gè)-ternews.xml進(jìn)去修改你的域名和服務(wù)器配置。
  twitter有個(gè)跨站http請求轉發(fā),mailtosmtp,
  voip轉發(fā)這是已經(jīng)被證明的事情。但是微博為了支持twitter服務(wù),要求用戶(hù)需要登錄才能轉發(fā),這無(wú)疑增加了這部分功能的流失量。
  你試試電腦和手機同時(shí)登錄新浪微博,如果登錄就會(huì )默認跳轉到新浪的官方網(wǎng)站(我覺(jué)得這是新浪微博使用的策略),
  微博服務(wù)器不是客戶(hù)端地址,我都是mailtosmtp。
  先設置好你需要在微博官網(wǎng)有所要上的網(wǎng)站,然后根據網(wǎng)站,統一訂閱(及上傳發(fā)送狀態(tài))或者自行經(jīng)營(yíng),在有心人點(diǎn)擊發(fā)送前,發(fā)一條訊息直接發(fā)送到要轉發(fā)的地址。
  開(kāi)api.轉發(fā)到/。
  這個(gè)似乎可以吧?不過(guò)要看你是個(gè)人或者網(wǎng)站還是企業(yè)的,如果是個(gè)人的需要在同一頁(yè)面放你的網(wǎng)站或者企業(yè)網(wǎng)站, 查看全部

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站或服務(wù)器端)
  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站或服務(wù)器端,然后對網(wǎng)站或服務(wù)器進(jìn)行二次開(kāi)發(fā)(seo,權重提升,轉發(fā)等)。如果網(wǎng)站或服務(wù)器使用了新浪微博商業(yè)服務(wù)(如,用來(lái)直接發(fā)廣告),那么可以做個(gè)jsonxml接口進(jìn)行實(shí)時(shí)推送。
  直接上阿里云購買(mǎi)微博服務(wù)器。賣(mài)家會(huì )給你一個(gè)配置文件。例如這個(gè)-ternews.xml進(jìn)去修改你的域名和服務(wù)器配置。
  twitter有個(gè)跨站http請求轉發(fā),mailtosmtp,
  voip轉發(fā)這是已經(jīng)被證明的事情。但是微博為了支持twitter服務(wù),要求用戶(hù)需要登錄才能轉發(fā),這無(wú)疑增加了這部分功能的流失量。
  你試試電腦和手機同時(shí)登錄新浪微博,如果登錄就會(huì )默認跳轉到新浪的官方網(wǎng)站(我覺(jué)得這是新浪微博使用的策略),
  微博服務(wù)器不是客戶(hù)端地址,我都是mailtosmtp。
  先設置好你需要在微博官網(wǎng)有所要上的網(wǎng)站,然后根據網(wǎng)站,統一訂閱(及上傳發(fā)送狀態(tài))或者自行經(jīng)營(yíng),在有心人點(diǎn)擊發(fā)送前,發(fā)一條訊息直接發(fā)送到要轉發(fā)的地址。
  開(kāi)api.轉發(fā)到/。
  這個(gè)似乎可以吧?不過(guò)要看你是個(gè)人或者網(wǎng)站還是企業(yè)的,如果是個(gè)人的需要在同一頁(yè)面放你的網(wǎng)站或者企業(yè)網(wǎng)站,

使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(新浪微博開(kāi)放平臺做個(gè)實(shí)踐,開(kāi)發(fā)一個(gè)功能簡(jiǎn)單的android客戶(hù)端)

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 66 次瀏覽 ? 2021-12-21 02:11 ? 來(lái)自相關(guān)話(huà)題

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(新浪微博開(kāi)放平臺做個(gè)實(shí)踐,開(kāi)發(fā)一個(gè)功能簡(jiǎn)單的android客戶(hù)端)
  介紹
  最近不太忙,花了點(diǎn)時(shí)間學(xué)習Android應用開(kāi)發(fā)。經(jīng)過(guò)兩周的學(xué)習,我在學(xué)習的同時(shí)也寫(xiě)了很多demo例子。您可以播放來(lái)自基本控件和基本動(dòng)畫(huà)效果的大量演示,并繼續更新和下載。
  從本周開(kāi)始,我打算以新浪微博開(kāi)放平臺為實(shí)踐,開(kāi)發(fā)一個(gè)簡(jiǎn)單的Android客戶(hù)端,盡可能完善功能。
  今天的內容
  
  上圖是這個(gè)客戶(hù)端的主界面。目前只拿到了前20條數據。您也可以單擊刷新來(lái)刷新數據。功能比較簡(jiǎn)單。
  運行系統為android2.2.
  用到的技術(shù)點(diǎn)包括ListView、自定義ListAdapter、多線(xiàn)程相關(guān)的Message、Handler、認證相關(guān)的OAuth、用戶(hù)圖片的異步加載。
  新浪微博的驗證使用了signpost的OAuth組件,沒(méi)有使用微博的SDK。
  
  來(lái)源下載:新浪微博2
  下載源代碼后,將后綴改為rar,使用壓縮軟件解壓即可。
  關(guān)于 OAuth 身份驗證
  OAuth 是一種流行的授權方案。twitter、facebook、google等大型開(kāi)放平臺均支持oauth認證方式。新浪微博、騰訊微博、163微博等國內開(kāi)放平臺也已支持。這種驗證方式。
  引用維基百科的相關(guān)說(shuō)明
  “Oauth 是一種開(kāi)放標準,允許用戶(hù)允許第三方應用訪(fǎng)問(wèn)用戶(hù)在某個(gè)網(wǎng)站上的私有資源,而無(wú)需將用戶(hù)名和密碼傳遞給第三方應用。oauth 允許用戶(hù)提供一個(gè)令牌,而不是用戶(hù)名和密碼來(lái)訪(fǎng)問(wèn)它們存儲在特定服務(wù)提供商中的數據?!?br />   例如:
  用戶(hù)A在服務(wù)提供者B上存儲了一些資源,B支持oauth授權方式。A 是 B 上的注冊用戶(hù),擁有用戶(hù)名和密碼。您可以通過(guò)使用用戶(hù)名和密碼登錄 B 來(lái)查看您的資源。假設有一個(gè)應用C,用戶(hù)A在使用C時(shí)需要將資源存儲在B上,實(shí)現C在B上展示資源有兩種方式。
  這時(shí)候C可以使用B開(kāi)啟的oauth授權機制,當用戶(hù)A想要展示B上的資源時(shí),C會(huì )跳轉到B的認證頁(yè)面,用戶(hù)在B的頁(yè)面輸入用戶(hù)名和密碼。通過(guò)后,會(huì )詢(xún)問(wèn)用戶(hù)是否為C應用開(kāi)發(fā)相關(guān)資源。用戶(hù)可以自定義C可以訪(fǎng)問(wèn)的資源,然后跳轉回C應用。這樣就不用擔心用戶(hù)名和密碼,也不會(huì )因為同時(shí)存儲多個(gè)資源而導致維護問(wèn)題。
  你可以通過(guò)下面的網(wǎng)站了解更多關(guān)于oauth的具體技術(shù)細節。
  
  從上圖我們可以看出,實(shí)際的流程分為消費者和提供者兩部分。Consumer是例子中的c應用,provider是例子中的B服務(wù)提供者。
  使用OAuth進(jìn)行認證授權的過(guò)程如下:
  用戶(hù)訪(fǎng)問(wèn)客戶(hù)端的網(wǎng)站,想要操作服務(wù)提供者中存儲的用戶(hù)資源??蛻?hù)端向服務(wù)提供者請求一個(gè)臨時(shí)令牌。在服務(wù)提供者驗證客戶(hù)端的身份后,它會(huì )授予一個(gè)臨時(shí)令牌??蛻?hù)端獲取臨時(shí)令牌后,將用戶(hù)引導至服務(wù)提供商的授權頁(yè)面,請求用戶(hù)授權。在這個(gè)過(guò)程中,臨時(shí)令牌和客戶(hù)端的回調連接被發(fā)送給服務(wù)提供者。用戶(hù)在服務(wù)提供者的網(wǎng)頁(yè)上輸入用戶(hù)名和密碼,然后授權客戶(hù)端訪(fǎng)問(wèn)所請求的資源。授權成功后,服務(wù)提供者將用戶(hù)引導回客戶(hù)端的網(wǎng)頁(yè)??蛻?hù)端根據臨時(shí)令牌從服務(wù)提供者處獲取訪(fǎng)問(wèn)令牌。服務(wù)提供者根據臨時(shí)令牌和用戶(hù)的授權向客戶(hù)端授予訪(fǎng)問(wèn)令牌??蛻?hù)端使用獲取的訪(fǎng)問(wèn)令牌訪(fǎng)問(wèn)存儲在服務(wù)提供者上的受保護資源。新浪微博上的Oauth
  
  借用新浪微博上的oauth驗證流程圖。
  當我們在新浪微博開(kāi)放平臺上創(chuàng )建一個(gè)新的應用程序時(shí),我們會(huì )給新的應用程序分配一個(gè)key和secret,即consumerKey和consumerSecret。通過(guò)這兩件事,我們去到request_token,然后將用戶(hù)重定向到新浪微博平臺的授權頁(yè)面。授權后,我們將根據 callback_url 重定向到我們應用程序的地址。我們再次使用request_token獲取access_token,后面需要傳遞。訪(fǎng)問(wèn)令牌訪(fǎng)問(wèn)開(kāi)放平臺提供的需要驗證的接口。
  當然,那些不需要驗證就可以訪(fǎng)問(wèn)的接口,直接使用key就可以訪(fǎng)問(wèn)了。具體請參考開(kāi)放平臺提供的API文檔。
  騰訊微博和163微博的開(kāi)放平臺在原理和實(shí)現上是相似的。
  包c(diǎn)om. 新浪微博2;導入 oauth。路標。OAuth消費者;導入 oauth。路標。OAuthProvider;導入 oauth。路標。公地http。CommonsHttpOAuthConsumer; 導入 oauth。路標。公地http。CommonsHttpOAuthProvider; 導入 oauth。路標。例外。OAuth通信異常;導入 oauth。路標。例外。OAuthExpectationFailedException; 導入 oauth。路標。例外。OAuthMessageSignerException; 導入 oauth。路標。例外。OAuthNotAuthorizedException; 公共類(lèi) OAuth {私有 OAuthConsumer mConsumer; 私有 OAuthProvider mProvider;public static final String CALLBACK_URL = "sinaweibo2://WeiboListActivity"; 公共靜態(tài)最終字符串CONSUMER_KEY =“1849239616”;公共靜態(tài)最終字符串 CONSUMER_SECRET = "b2137bf782d5a8394"
  噸。新浪。com。cn/oauth/request_token"; public static final String ACCESS_TOKEN_URL = ". 噸。新浪。com。cn/oauth/access_token"; public static final String AUTHORIZE_URL = ". 噸。新浪。com。cn/oauth/authorize"; public OAuth() {} public String RetrieveAuthUrl() 拋出 OAuthMessageSignerException, OAuthNotAuthorizedException, OAuthExpectationFailedException, OAuthCommunicationException {mConsumer = new CommonsHttpOAuthConsumer(CONSUTOMER_KEY, CONSUMER_SECRET_URL, SUMERZEUMERESUERESUERUrl 提供者字符串); = mProvider。
  檢索請求令牌(mConsumer,CALLBACK_URL);return authUrl;} public void RetrieveAccessToken(String verifier) throws OAuthMessageSignerException, OAuthNotAuthorizedException, OAuthExpectationFailedException, OAuthCommunicationException {mProvider. setOAuth10a(true); 供應商。檢索訪(fǎng)問(wèn)令牌(mConsumer,驗證器);OAuth 用戶(hù)。USER_ID=mProvider。獲取響應參數()。getFirst("user_id"); OAuth 用戶(hù)。ACCESS_TOKEN = mConsumer。獲取令牌();OAuth 用戶(hù)。ACCESS_TOKEN_SECRET = mConsumer。getTokenSecret();}}
  更多功能
  接下來(lái)主要有兩個(gè)功能需要改進(jìn),一個(gè)是分頁(yè)瀏覽,一個(gè)是發(fā)布微博。
  未來(lái)可能會(huì )支持圖片發(fā)布等實(shí)用功能。
  有UI美化和性能優(yōu)化。
  總結
  學(xué)習過(guò)程中看了兩本書(shū),Pro.Android.2.pdf和Professional.Android.2.Application.Development.(Wrox,.2010,.0470565527).pdf,都是很不錯的入門(mén)書(shū)籍,我沒(méi)有全部看完,看了大部分之后,會(huì )一邊看一邊寫(xiě)demo。
  同時(shí),我每天都會(huì )在論壇,eoe的開(kāi)發(fā)者門(mén)戶(hù)?;卮饐?wèn)題、解決問(wèn)題、提問(wèn)、發(fā)帖,簡(jiǎn)而言之就是鍛煉自己,強迫自己鍛煉基礎和思維。
  論壇上有很多中文pdf教程,但大部分都是從android開(kāi)發(fā)者中心的Dev Guide和Resources中的內容翻譯過(guò)來(lái)的。所以我覺(jué)得如果英文不是很差的話(huà),建議直接閱讀上面兩節,同時(shí)練習其中的例子,保證兩周內有很大的進(jìn)步。
  參考
  Technorati 標簽:android、開(kāi)放平臺、oauth、新浪微博 查看全部

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(新浪微博開(kāi)放平臺做個(gè)實(shí)踐,開(kāi)發(fā)一個(gè)功能簡(jiǎn)單的android客戶(hù)端)
  介紹
  最近不太忙,花了點(diǎn)時(shí)間學(xué)習Android應用開(kāi)發(fā)。經(jīng)過(guò)兩周的學(xué)習,我在學(xué)習的同時(shí)也寫(xiě)了很多demo例子。您可以播放來(lái)自基本控件和基本動(dòng)畫(huà)效果的大量演示,并繼續更新和下載。
  從本周開(kāi)始,我打算以新浪微博開(kāi)放平臺為實(shí)踐,開(kāi)發(fā)一個(gè)簡(jiǎn)單的Android客戶(hù)端,盡可能完善功能。
  今天的內容
  
  上圖是這個(gè)客戶(hù)端的主界面。目前只拿到了前20條數據。您也可以單擊刷新來(lái)刷新數據。功能比較簡(jiǎn)單。
  運行系統為android2.2.
  用到的技術(shù)點(diǎn)包括ListView、自定義ListAdapter、多線(xiàn)程相關(guān)的Message、Handler、認證相關(guān)的OAuth、用戶(hù)圖片的異步加載。
  新浪微博的驗證使用了signpost的OAuth組件,沒(méi)有使用微博的SDK。
  
  來(lái)源下載:新浪微博2
  下載源代碼后,將后綴改為rar,使用壓縮軟件解壓即可。
  關(guān)于 OAuth 身份驗證
  OAuth 是一種流行的授權方案。twitter、facebook、google等大型開(kāi)放平臺均支持oauth認證方式。新浪微博、騰訊微博、163微博等國內開(kāi)放平臺也已支持。這種驗證方式。
  引用維基百科的相關(guān)說(shuō)明
  “Oauth 是一種開(kāi)放標準,允許用戶(hù)允許第三方應用訪(fǎng)問(wèn)用戶(hù)在某個(gè)網(wǎng)站上的私有資源,而無(wú)需將用戶(hù)名和密碼傳遞給第三方應用。oauth 允許用戶(hù)提供一個(gè)令牌,而不是用戶(hù)名和密碼來(lái)訪(fǎng)問(wèn)它們存儲在特定服務(wù)提供商中的數據?!?br />   例如:
  用戶(hù)A在服務(wù)提供者B上存儲了一些資源,B支持oauth授權方式。A 是 B 上的注冊用戶(hù),擁有用戶(hù)名和密碼。您可以通過(guò)使用用戶(hù)名和密碼登錄 B 來(lái)查看您的資源。假設有一個(gè)應用C,用戶(hù)A在使用C時(shí)需要將資源存儲在B上,實(shí)現C在B上展示資源有兩種方式。
  這時(shí)候C可以使用B開(kāi)啟的oauth授權機制,當用戶(hù)A想要展示B上的資源時(shí),C會(huì )跳轉到B的認證頁(yè)面,用戶(hù)在B的頁(yè)面輸入用戶(hù)名和密碼。通過(guò)后,會(huì )詢(xún)問(wèn)用戶(hù)是否為C應用開(kāi)發(fā)相關(guān)資源。用戶(hù)可以自定義C可以訪(fǎng)問(wèn)的資源,然后跳轉回C應用。這樣就不用擔心用戶(hù)名和密碼,也不會(huì )因為同時(shí)存儲多個(gè)資源而導致維護問(wèn)題。
  你可以通過(guò)下面的網(wǎng)站了解更多關(guān)于oauth的具體技術(shù)細節。
  
  從上圖我們可以看出,實(shí)際的流程分為消費者和提供者兩部分。Consumer是例子中的c應用,provider是例子中的B服務(wù)提供者。
  使用OAuth進(jìn)行認證授權的過(guò)程如下:
  用戶(hù)訪(fǎng)問(wèn)客戶(hù)端的網(wǎng)站,想要操作服務(wù)提供者中存儲的用戶(hù)資源??蛻?hù)端向服務(wù)提供者請求一個(gè)臨時(shí)令牌。在服務(wù)提供者驗證客戶(hù)端的身份后,它會(huì )授予一個(gè)臨時(shí)令牌??蛻?hù)端獲取臨時(shí)令牌后,將用戶(hù)引導至服務(wù)提供商的授權頁(yè)面,請求用戶(hù)授權。在這個(gè)過(guò)程中,臨時(shí)令牌和客戶(hù)端的回調連接被發(fā)送給服務(wù)提供者。用戶(hù)在服務(wù)提供者的網(wǎng)頁(yè)上輸入用戶(hù)名和密碼,然后授權客戶(hù)端訪(fǎng)問(wèn)所請求的資源。授權成功后,服務(wù)提供者將用戶(hù)引導回客戶(hù)端的網(wǎng)頁(yè)??蛻?hù)端根據臨時(shí)令牌從服務(wù)提供者處獲取訪(fǎng)問(wèn)令牌。服務(wù)提供者根據臨時(shí)令牌和用戶(hù)的授權向客戶(hù)端授予訪(fǎng)問(wèn)令牌??蛻?hù)端使用獲取的訪(fǎng)問(wèn)令牌訪(fǎng)問(wèn)存儲在服務(wù)提供者上的受保護資源。新浪微博上的Oauth
  
  借用新浪微博上的oauth驗證流程圖。
  當我們在新浪微博開(kāi)放平臺上創(chuàng )建一個(gè)新的應用程序時(shí),我們會(huì )給新的應用程序分配一個(gè)key和secret,即consumerKey和consumerSecret。通過(guò)這兩件事,我們去到request_token,然后將用戶(hù)重定向到新浪微博平臺的授權頁(yè)面。授權后,我們將根據 callback_url 重定向到我們應用程序的地址。我們再次使用request_token獲取access_token,后面需要傳遞。訪(fǎng)問(wèn)令牌訪(fǎng)問(wèn)開(kāi)放平臺提供的需要驗證的接口。
  當然,那些不需要驗證就可以訪(fǎng)問(wèn)的接口,直接使用key就可以訪(fǎng)問(wèn)了。具體請參考開(kāi)放平臺提供的API文檔。
  騰訊微博和163微博的開(kāi)放平臺在原理和實(shí)現上是相似的。
  包c(diǎn)om. 新浪微博2;導入 oauth。路標。OAuth消費者;導入 oauth。路標。OAuthProvider;導入 oauth。路標。公地http。CommonsHttpOAuthConsumer; 導入 oauth。路標。公地http。CommonsHttpOAuthProvider; 導入 oauth。路標。例外。OAuth通信異常;導入 oauth。路標。例外。OAuthExpectationFailedException; 導入 oauth。路標。例外。OAuthMessageSignerException; 導入 oauth。路標。例外。OAuthNotAuthorizedException; 公共類(lèi) OAuth {私有 OAuthConsumer mConsumer; 私有 OAuthProvider mProvider;public static final String CALLBACK_URL = "sinaweibo2://WeiboListActivity"; 公共靜態(tài)最終字符串CONSUMER_KEY =“1849239616”;公共靜態(tài)最終字符串 CONSUMER_SECRET = "b2137bf782d5a8394"
  噸。新浪。com。cn/oauth/request_token"; public static final String ACCESS_TOKEN_URL = ". 噸。新浪。com。cn/oauth/access_token"; public static final String AUTHORIZE_URL = ". 噸。新浪。com。cn/oauth/authorize"; public OAuth() {} public String RetrieveAuthUrl() 拋出 OAuthMessageSignerException, OAuthNotAuthorizedException, OAuthExpectationFailedException, OAuthCommunicationException {mConsumer = new CommonsHttpOAuthConsumer(CONSUTOMER_KEY, CONSUMER_SECRET_URL, SUMERZEUMERESUERESUERUrl 提供者字符串); = mProvider。
  檢索請求令牌(mConsumer,CALLBACK_URL);return authUrl;} public void RetrieveAccessToken(String verifier) throws OAuthMessageSignerException, OAuthNotAuthorizedException, OAuthExpectationFailedException, OAuthCommunicationException {mProvider. setOAuth10a(true); 供應商。檢索訪(fǎng)問(wèn)令牌(mConsumer,驗證器);OAuth 用戶(hù)。USER_ID=mProvider。獲取響應參數()。getFirst("user_id"); OAuth 用戶(hù)。ACCESS_TOKEN = mConsumer。獲取令牌();OAuth 用戶(hù)。ACCESS_TOKEN_SECRET = mConsumer。getTokenSecret();}}
  更多功能
  接下來(lái)主要有兩個(gè)功能需要改進(jìn),一個(gè)是分頁(yè)瀏覽,一個(gè)是發(fā)布微博。
  未來(lái)可能會(huì )支持圖片發(fā)布等實(shí)用功能。
  有UI美化和性能優(yōu)化。
  總結
  學(xué)習過(guò)程中看了兩本書(shū),Pro.Android.2.pdf和Professional.Android.2.Application.Development.(Wrox,.2010,.0470565527).pdf,都是很不錯的入門(mén)書(shū)籍,我沒(méi)有全部看完,看了大部分之后,會(huì )一邊看一邊寫(xiě)demo。
  同時(shí),我每天都會(huì )在論壇,eoe的開(kāi)發(fā)者門(mén)戶(hù)?;卮饐?wèn)題、解決問(wèn)題、提問(wèn)、發(fā)帖,簡(jiǎn)而言之就是鍛煉自己,強迫自己鍛煉基礎和思維。
  論壇上有很多中文pdf教程,但大部分都是從android開(kāi)發(fā)者中心的Dev Guide和Resources中的內容翻譯過(guò)來(lái)的。所以我覺(jué)得如果英文不是很差的話(huà),建議直接閱讀上面兩節,同時(shí)練習其中的例子,保證兩周內有很大的進(jìn)步。
  參考
  Technorati 標簽:android、開(kāi)放平臺、oauth、新浪微博

使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(新浪微博的API研究研究,實(shí)現了類(lèi)拷過(guò)來(lái))

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 51 次瀏覽 ? 2021-12-20 11:12 ? 來(lái)自相關(guān)話(huà)題

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(新浪微博的API研究研究,實(shí)現了類(lèi)拷過(guò)來(lái))
  今天發(fā)布了一個(gè)關(guān)于新浪微博API的研究,現在已經(jīng)實(shí)現了發(fā)布微博的功能,包括帶圖片的微博。為安全起見(jiàn),新浪微博API不提供微博賬號密碼登錄功能。相反,它使用 OAuth 授權。用戶(hù)通過(guò)瀏覽器訪(fǎng)問(wèn)新浪網(wǎng)站進(jìn)行登錄,登錄成功后,瀏覽器將key和secret返回給程序。
  main.xml:
  一個(gè)登錄按鈕、一個(gè)輸入框和一個(gè)發(fā)布按鈕
  因為是接收瀏覽器返回的數據,所以AndroidManifest.xml在注冊Activity時(shí)必須添加一個(gè)Intent-Filter。
  intent-filter 必須寫(xiě)成兩段。如果寫(xiě)在一起,就不會(huì )被激活。
  簡(jiǎn)單起見(jiàn),直接復制新浪示例中的OAuthConstant類(lèi):
  接下來(lái)是最關(guān)鍵的主程序:
  
package com.pocketdigi.weibo;

import java.io.File;

import weibo4android.Weibo;
import weibo4android.WeiboException;
import weibo4android.http.AccessToken;
import weibo4android.http.RequestToken;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class Main extends Activity {
/** Called when the activity is first created. */
String key = "", secret = "";
Button login,send;
EditText status;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
System.setProperty("weibo4j.oauth.consumerKey", "3997936609");
System.setProperty("weibo4j.oauth.consumerSecret",
"8bc9e3bfd6ae8e3b2b8bda9079918950");
//設置在新浪應用開(kāi)放平臺申請的應用的key和secret
login=(Button)findViewById(R.id.login);
send=(Button)findViewById(R.id.send);
status=(EditText)findViewById(R.id.status);
login.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
login();
//登錄
}});
send.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String text=String.valueOf(status.getText());
Weibo weibo = new Weibo();
weibo.setToken(key,secret);
try {
//weibo.updateStatus(text);
//只發(fā)文字
File f=new File("/sdcard/wallpaper/129567208597069400.jpg");
weibo.uploadStatus(text,f );
//發(fā)文字+圖片,這里需要導入commons-httpclient-3.0.1.jar,自己網(wǎng)上下
//在實(shí)際項目上,最好放Thread里,因為按下去的時(shí)候按鈕會(huì )卡
} catch (WeiboException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}});
}

@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
//啟動(dòng)時(shí)執行檢測是否來(lái)自網(wǎng)頁(yè)登錄返回
//如果是,獲取key和secret
//否則讀取SharedPreferences
//若得不到key和secret,直接跳轉登錄
Uri uri = this.getIntent().getData();
if (uri != null) {
//如果是瀏覽器返回
try {
RequestToken requestToken = OAuthConstant.getInstance()
.getRequestToken();
AccessToken accessToken = requestToken.getAccessToken(uri
.getQueryParameter("oauth_verifier"));
OAuthConstant.getInstance().setAccessToken(accessToken);
// 保存
Editor sharedata = getSharedPreferences("WeiBo", 0).edit();
sharedata.putString("key", accessToken.getToken());
sharedata.putString("secret", accessToken.getTokenSecret());
sharedata.commit();
key = accessToken.getToken();
secret = accessToken.getTokenSecret();
} catch (WeiboException e) {
e.printStackTrace();
}
} else {
//如果是用戶(hù)自己?jiǎn)?dòng)
SharedPreferences settings = getSharedPreferences("WeiBo", 0);
key = settings.getString("key", "");
secret = settings.getString("secret", "");
}
if (key.equals("") || secret.equals("")) {
Toast.makeText(this, "尚未登錄", Toast.LENGTH_LONG).show();
login();
//跳轉到瀏覽器登錄

}

}
public void login(){
Weibo weibo = OAuthConstant.getInstance().getWeibo();
RequestToken requestToken;
try {
requestToken =weibo.getOAuthRequestToken("sina://weibo");
//為了避免與同類(lèi)應用沖突,還是自己改下URI吧
Uri uri2 = Uri.parse(requestToken.getAuthenticationURL()+ "&from=xweibo");
OAuthConstant.getInstance().setRequestToken(requestToken);
startActivity(new Intent(Intent.ACTION_VIEW, uri2));
} catch (WeiboException e) {
e.printStackTrace();
}
}
}
  發(fā)送圖片需要導入commons-httpclient-3.0.1.jar,否則啟動(dòng)會(huì )報錯,當然是weibo4android-1. 2.0. jar 必不可少 查看全部

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(新浪微博的API研究研究,實(shí)現了類(lèi)拷過(guò)來(lái))
  今天發(fā)布了一個(gè)關(guān)于新浪微博API的研究,現在已經(jīng)實(shí)現了發(fā)布微博的功能,包括帶圖片的微博。為安全起見(jiàn),新浪微博API不提供微博賬號密碼登錄功能。相反,它使用 OAuth 授權。用戶(hù)通過(guò)瀏覽器訪(fǎng)問(wèn)新浪網(wǎng)站進(jìn)行登錄,登錄成功后,瀏覽器將key和secret返回給程序。
  main.xml:
  一個(gè)登錄按鈕、一個(gè)輸入框和一個(gè)發(fā)布按鈕
  因為是接收瀏覽器返回的數據,所以AndroidManifest.xml在注冊Activity時(shí)必須添加一個(gè)Intent-Filter。
  intent-filter 必須寫(xiě)成兩段。如果寫(xiě)在一起,就不會(huì )被激活。
  簡(jiǎn)單起見(jiàn),直接復制新浪示例中的OAuthConstant類(lèi):
  接下來(lái)是最關(guān)鍵的主程序:
  
package com.pocketdigi.weibo;

import java.io.File;

import weibo4android.Weibo;
import weibo4android.WeiboException;
import weibo4android.http.AccessToken;
import weibo4android.http.RequestToken;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class Main extends Activity {
/** Called when the activity is first created. */
String key = "", secret = "";
Button login,send;
EditText status;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
System.setProperty("weibo4j.oauth.consumerKey", "3997936609");
System.setProperty("weibo4j.oauth.consumerSecret",
"8bc9e3bfd6ae8e3b2b8bda9079918950");
//設置在新浪應用開(kāi)放平臺申請的應用的key和secret
login=(Button)findViewById(R.id.login);
send=(Button)findViewById(R.id.send);
status=(EditText)findViewById(R.id.status);
login.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
login();
//登錄
}});
send.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String text=String.valueOf(status.getText());
Weibo weibo = new Weibo();
weibo.setToken(key,secret);
try {
//weibo.updateStatus(text);
//只發(fā)文字
File f=new File("/sdcard/wallpaper/129567208597069400.jpg");
weibo.uploadStatus(text,f );
//發(fā)文字+圖片,這里需要導入commons-httpclient-3.0.1.jar,自己網(wǎng)上下
//在實(shí)際項目上,最好放Thread里,因為按下去的時(shí)候按鈕會(huì )卡
} catch (WeiboException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}});
}

@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
//啟動(dòng)時(shí)執行檢測是否來(lái)自網(wǎng)頁(yè)登錄返回
//如果是,獲取key和secret
//否則讀取SharedPreferences
//若得不到key和secret,直接跳轉登錄
Uri uri = this.getIntent().getData();
if (uri != null) {
//如果是瀏覽器返回
try {
RequestToken requestToken = OAuthConstant.getInstance()
.getRequestToken();
AccessToken accessToken = requestToken.getAccessToken(uri
.getQueryParameter("oauth_verifier"));
OAuthConstant.getInstance().setAccessToken(accessToken);
// 保存
Editor sharedata = getSharedPreferences("WeiBo", 0).edit();
sharedata.putString("key", accessToken.getToken());
sharedata.putString("secret", accessToken.getTokenSecret());
sharedata.commit();
key = accessToken.getToken();
secret = accessToken.getTokenSecret();
} catch (WeiboException e) {
e.printStackTrace();
}
} else {
//如果是用戶(hù)自己?jiǎn)?dòng)
SharedPreferences settings = getSharedPreferences("WeiBo", 0);
key = settings.getString("key", "");
secret = settings.getString("secret", "");
}
if (key.equals("") || secret.equals("")) {
Toast.makeText(this, "尚未登錄", Toast.LENGTH_LONG).show();
login();
//跳轉到瀏覽器登錄

}

}
public void login(){
Weibo weibo = OAuthConstant.getInstance().getWeibo();
RequestToken requestToken;
try {
requestToken =weibo.getOAuthRequestToken("sina://weibo");
//為了避免與同類(lèi)應用沖突,還是自己改下URI吧
Uri uri2 = Uri.parse(requestToken.getAuthenticationURL()+ "&from=xweibo");
OAuthConstant.getInstance().setRequestToken(requestToken);
startActivity(new Intent(Intent.ACTION_VIEW, uri2));
} catch (WeiboException e) {
e.printStackTrace();
}
}
}
  發(fā)送圖片需要導入commons-httpclient-3.0.1.jar,否則啟動(dòng)會(huì )報錯,當然是weibo4android-1. 2.0. jar 必不可少

使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(利用PHP進(jìn)行新浪微博API開(kāi)發(fā)的內容一個(gè)整理和說(shuō)明)

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 39 次瀏覽 ? 2021-12-20 11:12 ? 來(lái)自相關(guān)話(huà)題

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(利用PHP進(jìn)行新浪微博API開(kāi)發(fā)的內容一個(gè)整理和說(shuō)明)
  在開(kāi)發(fā)和學(xué)習的過(guò)程中,我覺(jué)得雖然不是太難,但還是有一些問(wèn)題需要我們注意。今天在開(kāi)發(fā)學(xué)習的過(guò)程中,簡(jiǎn)單的用PHP開(kāi)發(fā)了新浪微博API。整理和說(shuō)明內容
  現在玩微博的人越來(lái)越多,微博上的第三方應用開(kāi)??發(fā)也越來(lái)越多。偶然接觸到新浪微博API開(kāi)發(fā)。新浪微博API開(kāi)發(fā)資源比較大。新浪微博為開(kāi)發(fā)者提供了一個(gè)平臺。網(wǎng)站是: 收錄新浪微博開(kāi)發(fā)的綜合信息,包括開(kāi)發(fā)者的使用和介紹、各種語(yǔ)言的API功能介紹文檔、SDK等資料。.
  在開(kāi)發(fā)和學(xué)習的過(guò)程中,我覺(jué)得雖然不是太難,但還是有一些問(wèn)題需要我們注意。今天在開(kāi)發(fā)學(xué)習的過(guò)程中,簡(jiǎn)單的用PHP開(kāi)發(fā)了新浪微博API。內容組織和解釋?zhuān)?br />   新浪微博API開(kāi)發(fā)前的準備
  首先到新浪微博開(kāi)放平臺下載基于PHP的SDK開(kāi)發(fā)包。下載地址為:
  下載完成后放到自己的開(kāi)發(fā)環(huán)境中解壓。演示程序也包括在內。我們可以參考它的示例程序進(jìn)行編寫(xiě)。
  新浪微博API開(kāi)發(fā)最重要的用戶(hù)授權流程
  事實(shí)上,開(kāi)發(fā)過(guò)程中的很多問(wèn)題都集中在用戶(hù)授權階段。我開(kāi)發(fā)的第三方應用使用的是OAuth授權。新浪微博開(kāi)放平臺的OAuth授權流程非常清晰完整。我們你可以看看。這里我將從示例開(kāi)發(fā)的角度進(jìn)行介紹和說(shuō)明。
  1.首先獲取未授權的Request Token
  復制代碼代碼如下:
  $o = new WeiboOAuth( WB_AKEY, WB_SKEY );
  $keys = $o-&gt;getRequestToken();
  //echo($keys['oauth_token'].':'.$keys['oauth_token_secret']);
  我們需要在新浪微博開(kāi)放平臺注冊一個(gè)賬號,或者直接用我們的新浪微博賬號登錄,進(jìn)入我的應用,然后按照提示創(chuàng )建我們自己的第三方應用。創(chuàng )建完成后,我們可以得到兩個(gè)授權App Key和App Secret值,這兩個(gè)值是我們應用開(kāi)發(fā)的關(guān)鍵。
  獲取到授權值后,我們可以通過(guò)上面的代碼來(lái)獲取未授權的Request Token值,該值會(huì )保存在$key數組變量中。
  2. 然后請求用戶(hù)授權token
  復制代碼代碼如下:
  $_SESSION['keys'] = $keys;
  aurl = $o-&gt;getAuthorizeURL( $keys['oauth_token'] ,false,'');
  獲取到未授權Request Token值后,我們就可以使用上面的代碼準備去新浪微博授權頁(yè)面進(jìn)行授權了。$aurl 是授權鏈接頁(yè)面。拿到$aurl后,我們可以使用header()直接跳轉到那個(gè)授權頁(yè)面,然后用戶(hù)輸入新浪微博賬號和密碼進(jìn)行授權。授權完成后會(huì )自動(dòng)跳轉回你最后一個(gè)參數設置的回調頁(yè)面:這個(gè)鏈接可以設置為上一個(gè)頁(yè)面,這樣授權完成后會(huì )自動(dòng)再次跳轉回來(lái)。
  需要注意的是,需要設置session key的值,在下面獲取的授權Access Token中需要。很多朋友可能會(huì )參考開(kāi)放平臺上的說(shuō)明進(jìn)行授權,但是發(fā)現總是報錯。這通常是問(wèn)題所在。您尚未設置會(huì )話(huà)的鍵值。當然,下面無(wú)法獲取Access Token的值。必須記住這一點(diǎn)。
  3.用戶(hù)最后授權的Access Token
  復制代碼代碼如下:
  $o = 新微博OAuth( WB_AKEY,
  WB_SKEY,
  $_SESSION['keys']['oauth_token'],
  $_SESSION['keys']['oauth_token_secret'] );
  $last_key = $o-&gt;getAccessToken( $_REQUEST['oauth_verifier']);
  回聲($last_key['oauth_token']);
  以上代碼最終獲得了用戶(hù)授權的Access Token。一共有兩個(gè)值,存放在$last_key數組變量中。我們也可以看到最后兩個(gè)參數是我們之前設置的session值。至此,基本完成。這是一個(gè)完整的新浪微博用戶(hù)授權流程。
  授權后工作
  授權完成后,我們就可以開(kāi)始調用新浪微博提供的各種API函數接口進(jìn)行實(shí)際應用開(kāi)發(fā)了。這里我簡(jiǎn)單介紹一下獲取最新微博記錄的界面。其他類(lèi)似。
  獲取新浪微博最新信息的API接口函數為:public_timeline(),示例代碼如下:
  復制代碼代碼如下:
  //獲取前20條最新更新的公眾微博新聞
  $c = 新微博客戶(hù)端( WB_AKEY,
  WB_SKEY,
  $oauth_token,
  $oauth_token_secret );
  $msg = $c-&gt;public_timeline();
  if ($msg === false || $msg === null){
  echo "發(fā)生錯誤";
  返回假;
  }
  if (isset($msg['error_code']) &amp;&amp; isset($msg['error'])){
  echo ('Error_code:'.$msg['error_code'].'; Error:'.$msg['error']);
  返回假;
  }
  打印_r($msg);
  通常我們拿到用戶(hù)授權的access token值后,會(huì )保存在我們的user表中,對應我們應用中的賬號。之后我們就不用每次調用新浪微博的API接口都去。認證。
  上面的代碼很簡(jiǎn)單,實(shí)例化WeiboClient對象,然后直接調用接口函數public_timeline獲取返回的信息,如果沒(méi)有錯誤。通常新浪微博api接口返回的數據格式一般是Json格式或者xml格式,而我們這里是用php開(kāi)發(fā)的,那么使用Json格式數據有先天優(yōu)勢,如果返回Json格式數據,直接使用php即可。函數 json_decode() 可以轉換為 PHP 常用的數組格式。 查看全部

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(利用PHP進(jìn)行新浪微博API開(kāi)發(fā)的內容一個(gè)整理和說(shuō)明)
  在開(kāi)發(fā)和學(xué)習的過(guò)程中,我覺(jué)得雖然不是太難,但還是有一些問(wèn)題需要我們注意。今天在開(kāi)發(fā)學(xué)習的過(guò)程中,簡(jiǎn)單的用PHP開(kāi)發(fā)了新浪微博API。整理和說(shuō)明內容
  現在玩微博的人越來(lái)越多,微博上的第三方應用開(kāi)??發(fā)也越來(lái)越多。偶然接觸到新浪微博API開(kāi)發(fā)。新浪微博API開(kāi)發(fā)資源比較大。新浪微博為開(kāi)發(fā)者提供了一個(gè)平臺。網(wǎng)站是: 收錄新浪微博開(kāi)發(fā)的綜合信息,包括開(kāi)發(fā)者的使用和介紹、各種語(yǔ)言的API功能介紹文檔、SDK等資料。.
  在開(kāi)發(fā)和學(xué)習的過(guò)程中,我覺(jué)得雖然不是太難,但還是有一些問(wèn)題需要我們注意。今天在開(kāi)發(fā)學(xué)習的過(guò)程中,簡(jiǎn)單的用PHP開(kāi)發(fā)了新浪微博API。內容組織和解釋?zhuān)?br />   新浪微博API開(kāi)發(fā)前的準備
  首先到新浪微博開(kāi)放平臺下載基于PHP的SDK開(kāi)發(fā)包。下載地址為:
  下載完成后放到自己的開(kāi)發(fā)環(huán)境中解壓。演示程序也包括在內。我們可以參考它的示例程序進(jìn)行編寫(xiě)。
  新浪微博API開(kāi)發(fā)最重要的用戶(hù)授權流程
  事實(shí)上,開(kāi)發(fā)過(guò)程中的很多問(wèn)題都集中在用戶(hù)授權階段。我開(kāi)發(fā)的第三方應用使用的是OAuth授權。新浪微博開(kāi)放平臺的OAuth授權流程非常清晰完整。我們你可以看看。這里我將從示例開(kāi)發(fā)的角度進(jìn)行介紹和說(shuō)明。
  1.首先獲取未授權的Request Token
  復制代碼代碼如下:
  $o = new WeiboOAuth( WB_AKEY, WB_SKEY );
  $keys = $o-&gt;getRequestToken();
  //echo($keys['oauth_token'].':'.$keys['oauth_token_secret']);
  我們需要在新浪微博開(kāi)放平臺注冊一個(gè)賬號,或者直接用我們的新浪微博賬號登錄,進(jìn)入我的應用,然后按照提示創(chuàng )建我們自己的第三方應用。創(chuàng )建完成后,我們可以得到兩個(gè)授權App Key和App Secret值,這兩個(gè)值是我們應用開(kāi)發(fā)的關(guān)鍵。
  獲取到授權值后,我們可以通過(guò)上面的代碼來(lái)獲取未授權的Request Token值,該值會(huì )保存在$key數組變量中。
  2. 然后請求用戶(hù)授權token
  復制代碼代碼如下:
  $_SESSION['keys'] = $keys;
  aurl = $o-&gt;getAuthorizeURL( $keys['oauth_token'] ,false,'');
  獲取到未授權Request Token值后,我們就可以使用上面的代碼準備去新浪微博授權頁(yè)面進(jìn)行授權了。$aurl 是授權鏈接頁(yè)面。拿到$aurl后,我們可以使用header()直接跳轉到那個(gè)授權頁(yè)面,然后用戶(hù)輸入新浪微博賬號和密碼進(jìn)行授權。授權完成后會(huì )自動(dòng)跳轉回你最后一個(gè)參數設置的回調頁(yè)面:這個(gè)鏈接可以設置為上一個(gè)頁(yè)面,這樣授權完成后會(huì )自動(dòng)再次跳轉回來(lái)。
  需要注意的是,需要設置session key的值,在下面獲取的授權Access Token中需要。很多朋友可能會(huì )參考開(kāi)放平臺上的說(shuō)明進(jìn)行授權,但是發(fā)現總是報錯。這通常是問(wèn)題所在。您尚未設置會(huì )話(huà)的鍵值。當然,下面無(wú)法獲取Access Token的值。必須記住這一點(diǎn)。
  3.用戶(hù)最后授權的Access Token
  復制代碼代碼如下:
  $o = 新微博OAuth( WB_AKEY,
  WB_SKEY,
  $_SESSION['keys']['oauth_token'],
  $_SESSION['keys']['oauth_token_secret'] );
  $last_key = $o-&gt;getAccessToken( $_REQUEST['oauth_verifier']);
  回聲($last_key['oauth_token']);
  以上代碼最終獲得了用戶(hù)授權的Access Token。一共有兩個(gè)值,存放在$last_key數組變量中。我們也可以看到最后兩個(gè)參數是我們之前設置的session值。至此,基本完成。這是一個(gè)完整的新浪微博用戶(hù)授權流程。
  授權后工作
  授權完成后,我們就可以開(kāi)始調用新浪微博提供的各種API函數接口進(jìn)行實(shí)際應用開(kāi)發(fā)了。這里我簡(jiǎn)單介紹一下獲取最新微博記錄的界面。其他類(lèi)似。
  獲取新浪微博最新信息的API接口函數為:public_timeline(),示例代碼如下:
  復制代碼代碼如下:
  //獲取前20條最新更新的公眾微博新聞
  $c = 新微博客戶(hù)端( WB_AKEY,
  WB_SKEY,
  $oauth_token,
  $oauth_token_secret );
  $msg = $c-&gt;public_timeline();
  if ($msg === false || $msg === null){
  echo "發(fā)生錯誤";
  返回假;
  }
  if (isset($msg['error_code']) &amp;&amp; isset($msg['error'])){
  echo ('Error_code:'.$msg['error_code'].'; Error:'.$msg['error']);
  返回假;
  }
  打印_r($msg);
  通常我們拿到用戶(hù)授權的access token值后,會(huì )保存在我們的user表中,對應我們應用中的賬號。之后我們就不用每次調用新浪微博的API接口都去。認證。
  上面的代碼很簡(jiǎn)單,實(shí)例化WeiboClient對象,然后直接調用接口函數public_timeline獲取返回的信息,如果沒(méi)有錯誤。通常新浪微博api接口返回的數據格式一般是Json格式或者xml格式,而我們這里是用php開(kāi)發(fā)的,那么使用Json格式數據有先天優(yōu)勢,如果返回Json格式數據,直接使用php即可。函數 json_decode() 可以轉換為 PHP 常用的數組格式。

使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站( 利用PHP進(jìn)行新浪微博API開(kāi)發(fā)的內容進(jìn)行一個(gè)整理和說(shuō)明)

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 46 次瀏覽 ? 2021-12-20 02:13 ? 來(lái)自相關(guān)話(huà)題

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(
利用PHP進(jìn)行新浪微博API開(kāi)發(fā)的內容進(jìn)行一個(gè)整理和說(shuō)明)
  新浪微博API開(kāi)發(fā)用戶(hù)授權介紹(PHP基礎)
  更新時(shí)間:2011-09-25 22:52:37 作者:
  在開(kāi)發(fā)和學(xué)習的過(guò)程中,我覺(jué)得雖然不是太難,但還是有一些問(wèn)題需要我們注意。今天在開(kāi)發(fā)學(xué)習的過(guò)程中,簡(jiǎn)單的用PHP開(kāi)發(fā)了新浪微博API。整理和說(shuō)明內容
  現在玩微博的人越來(lái)越多,微博上的第三方應用開(kāi)??發(fā)也越來(lái)越多。偶然接觸到新浪微博API開(kāi)發(fā)。新浪微博API開(kāi)發(fā)資源比較大。新浪微博為開(kāi)發(fā)者提供了一個(gè)平臺。網(wǎng)站是: 收錄新浪微博開(kāi)發(fā)的綜合信息,包括開(kāi)發(fā)者的使用和介紹、各種語(yǔ)言的API功能介紹文檔、SDK等資料。.
  在開(kāi)發(fā)和學(xué)習的過(guò)程中,我覺(jué)得雖然不是太難,但還是有一些問(wèn)題需要我們注意。今天在開(kāi)發(fā)學(xué)習的過(guò)程中,簡(jiǎn)單的用PHP開(kāi)發(fā)了新浪微博API。內容組織和解釋?zhuān)?br />   新浪微博API開(kāi)發(fā)前的準備
  首先到新浪微博開(kāi)放平臺下載基于PHP的SDK開(kāi)發(fā)包。下載地址為:
  下載完成后放到自己的開(kāi)發(fā)環(huán)境中解壓。演示程序也包括在內。我們可以參考它的示例程序進(jìn)行編寫(xiě)。
  新浪微博API開(kāi)發(fā)最重要的用戶(hù)授權流程
  事實(shí)上,開(kāi)發(fā)過(guò)程中的很多問(wèn)題都集中在用戶(hù)授權階段。我開(kāi)發(fā)的第三方應用使用的是OAuth授權。新浪微博開(kāi)放平臺的OAuth授權流程非常清晰完整。我們你可以看看。這里我將從示例開(kāi)發(fā)的角度進(jìn)行介紹和說(shuō)明。
  1.首先獲取未授權的Request Token
  復制代碼代碼如下:
  $o = new WeiboOAuth( WB_AKEY, WB_SKEY );
  $keys = $o-&gt;getRequestToken();
  //echo($keys['oauth_token'].':'.$keys['oauth_token_secret']);
  我們需要在新浪微博開(kāi)放平臺注冊一個(gè)賬號,或者直接用我們的新浪微博賬號登錄,進(jìn)入我的應用,然后按照提示創(chuàng )建我們自己的第三方應用。創(chuàng )建完成后,我們可以得到兩個(gè)授權App Key和App Secret值,這兩個(gè)值是我們應用開(kāi)發(fā)的關(guān)鍵。
  獲取到授權值后,我們可以通過(guò)上面的代碼來(lái)獲取未授權的Request Token值,該值會(huì )保存在$key數組變量中。
  2. 然后請求用戶(hù)授權token
  復制代碼代碼如下:
  $_SESSION['keys'] = $keys;
  aurl = $o-&gt;getAuthorizeURL( $keys['oauth_token'] ,false,'');
  獲取到未授權Request Token值后,我們就可以使用上面的代碼準備去新浪微博授權頁(yè)面進(jìn)行授權了。$aurl 是授權鏈接頁(yè)面。拿到$aurl后,我們可以使用header()直接跳轉到那個(gè)授權頁(yè)面,然后用戶(hù)輸入新浪微博賬號和密碼進(jìn)行授權。授權完成后會(huì )自動(dòng)跳轉回你最后一個(gè)參數設置的回調頁(yè)面:這個(gè)鏈接可以設置為上一個(gè)頁(yè)面,這樣授權完成后會(huì )自動(dòng)再次跳轉回來(lái)。
  需要注意的是,需要設置session key的值,在下面獲取的授權Access Token中需要。很多朋友可能會(huì )參考開(kāi)放平臺上的說(shuō)明進(jìn)行授權,但是發(fā)現總是報錯。這通常是問(wèn)題所在。您尚未設置會(huì )話(huà)的鍵值。當然,下面無(wú)法獲取Access Token的值。必須記住這一點(diǎn)。
  3.用戶(hù)最后授權的Access Token
  復制代碼代碼如下:
  $o = 新微博OAuth( WB_AKEY,
  WB_SKEY,
  $_SESSION['keys']['oauth_token'],
  $_SESSION['keys']['oauth_token_secret'] );
  $last_key = $o-&gt;getAccessToken( $_REQUEST['oauth_verifier']);
  回聲($last_key['oauth_token']);
  以上代碼最終獲得了用戶(hù)授權的Access Token。一共有兩個(gè)值,存放在$last_key數組變量中。我們也可以看到最后兩個(gè)參數是我們之前設置的session值。至此,基本完成。這是一個(gè)完整的新浪微博用戶(hù)授權流程。
  授權后工作
  授權完成后,我們就可以開(kāi)始調用新浪微博提供的各種API函數接口進(jìn)行實(shí)際應用開(kāi)發(fā)了。這里我簡(jiǎn)單介紹一下獲取最新微博記錄的界面。其他類(lèi)似。
  獲取新浪微博最新信息的API接口函數為:public_timeline(),示例代碼如下:
  復制代碼代碼如下:
  //獲取前20條最新更新的公眾微博新聞
  $c = 新微博客戶(hù)端( WB_AKEY,
  WB_SKEY,
  $oauth_token,
  $oauth_token_secret );
  $msg = $c-&gt;public_timeline();
  if ($msg === false || $msg === null){
  echo "發(fā)生錯誤";
  返回假;
  }
  if (isset($msg['error_code']) &amp;&amp; isset($msg['error'])){
  echo ('Error_code:'.$msg['error_code'].'; Error:'.$msg['error']);
  返回假;
  }
  打印_r($msg);
  通常我們拿到用戶(hù)授權的access token值后,會(huì )保存在我們的user表中,對應我們應用中的賬號。之后我們就不用每次調用新浪微博的API接口都去。認證。
  上面的代碼很簡(jiǎn)單,實(shí)例化WeiboClient對象,然后直接調用接口函數public_timeline獲取返回的信息,如果沒(méi)有錯誤。通常新浪微博api接口返回的數據格式一般是Json格式或者xml格式,而我們這里是用php開(kāi)發(fā)的,那么使用Json格式數據有先天優(yōu)勢,如果返回Json格式數據,直接使用php即可。函數 json_decode() 可以轉換為 PHP 常用的數組格式。 查看全部

  使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(
利用PHP進(jìn)行新浪微博API開(kāi)發(fā)的內容進(jìn)行一個(gè)整理和說(shuō)明)
  新浪微博API開(kāi)發(fā)用戶(hù)授權介紹(PHP基礎)
  更新時(shí)間:2011-09-25 22:52:37 作者:
  在開(kāi)發(fā)和學(xué)習的過(guò)程中,我覺(jué)得雖然不是太難,但還是有一些問(wèn)題需要我們注意。今天在開(kāi)發(fā)學(xué)習的過(guò)程中,簡(jiǎn)單的用PHP開(kāi)發(fā)了新浪微博API。整理和說(shuō)明內容
  現在玩微博的人越來(lái)越多,微博上的第三方應用開(kāi)??發(fā)也越來(lái)越多。偶然接觸到新浪微博API開(kāi)發(fā)。新浪微博API開(kāi)發(fā)資源比較大。新浪微博為開(kāi)發(fā)者提供了一個(gè)平臺。網(wǎng)站是: 收錄新浪微博開(kāi)發(fā)的綜合信息,包括開(kāi)發(fā)者的使用和介紹、各種語(yǔ)言的API功能介紹文檔、SDK等資料。.
  在開(kāi)發(fā)和學(xué)習的過(guò)程中,我覺(jué)得雖然不是太難,但還是有一些問(wèn)題需要我們注意。今天在開(kāi)發(fā)學(xué)習的過(guò)程中,簡(jiǎn)單的用PHP開(kāi)發(fā)了新浪微博API。內容組織和解釋?zhuān)?br />   新浪微博API開(kāi)發(fā)前的準備
  首先到新浪微博開(kāi)放平臺下載基于PHP的SDK開(kāi)發(fā)包。下載地址為:
  下載完成后放到自己的開(kāi)發(fā)環(huán)境中解壓。演示程序也包括在內。我們可以參考它的示例程序進(jìn)行編寫(xiě)。
  新浪微博API開(kāi)發(fā)最重要的用戶(hù)授權流程
  事實(shí)上,開(kāi)發(fā)過(guò)程中的很多問(wèn)題都集中在用戶(hù)授權階段。我開(kāi)發(fā)的第三方應用使用的是OAuth授權。新浪微博開(kāi)放平臺的OAuth授權流程非常清晰完整。我們你可以看看。這里我將從示例開(kāi)發(fā)的角度進(jìn)行介紹和說(shuō)明。
  1.首先獲取未授權的Request Token
  復制代碼代碼如下:
  $o = new WeiboOAuth( WB_AKEY, WB_SKEY );
  $keys = $o-&gt;getRequestToken();
  //echo($keys['oauth_token'].':'.$keys['oauth_token_secret']);
  我們需要在新浪微博開(kāi)放平臺注冊一個(gè)賬號,或者直接用我們的新浪微博賬號登錄,進(jìn)入我的應用,然后按照提示創(chuàng )建我們自己的第三方應用。創(chuàng )建完成后,我們可以得到兩個(gè)授權App Key和App Secret值,這兩個(gè)值是我們應用開(kāi)發(fā)的關(guān)鍵。
  獲取到授權值后,我們可以通過(guò)上面的代碼來(lái)獲取未授權的Request Token值,該值會(huì )保存在$key數組變量中。
  2. 然后請求用戶(hù)授權token
  復制代碼代碼如下:
  $_SESSION['keys'] = $keys;
  aurl = $o-&gt;getAuthorizeURL( $keys['oauth_token'] ,false,'');
  獲取到未授權Request Token值后,我們就可以使用上面的代碼準備去新浪微博授權頁(yè)面進(jìn)行授權了。$aurl 是授權鏈接頁(yè)面。拿到$aurl后,我們可以使用header()直接跳轉到那個(gè)授權頁(yè)面,然后用戶(hù)輸入新浪微博賬號和密碼進(jìn)行授權。授權完成后會(huì )自動(dòng)跳轉回你最后一個(gè)參數設置的回調頁(yè)面:這個(gè)鏈接可以設置為上一個(gè)頁(yè)面,這樣授權完成后會(huì )自動(dòng)再次跳轉回來(lái)。
  需要注意的是,需要設置session key的值,在下面獲取的授權Access Token中需要。很多朋友可能會(huì )參考開(kāi)放平臺上的說(shuō)明進(jìn)行授權,但是發(fā)現總是報錯。這通常是問(wèn)題所在。您尚未設置會(huì )話(huà)的鍵值。當然,下面無(wú)法獲取Access Token的值。必須記住這一點(diǎn)。
  3.用戶(hù)最后授權的Access Token
  復制代碼代碼如下:
  $o = 新微博OAuth( WB_AKEY,
  WB_SKEY,
  $_SESSION['keys']['oauth_token'],
  $_SESSION['keys']['oauth_token_secret'] );
  $last_key = $o-&gt;getAccessToken( $_REQUEST['oauth_verifier']);
  回聲($last_key['oauth_token']);
  以上代碼最終獲得了用戶(hù)授權的Access Token。一共有兩個(gè)值,存放在$last_key數組變量中。我們也可以看到最后兩個(gè)參數是我們之前設置的session值。至此,基本完成。這是一個(gè)完整的新浪微博用戶(hù)授權流程。
  授權后工作
  授權完成后,我們就可以開(kāi)始調用新浪微博提供的各種API函數接口進(jìn)行實(shí)際應用開(kāi)發(fā)了。這里我簡(jiǎn)單介紹一下獲取最新微博記錄的界面。其他類(lèi)似。
  獲取新浪微博最新信息的API接口函數為:public_timeline(),示例代碼如下:
  復制代碼代碼如下:
  //獲取前20條最新更新的公眾微博新聞
  $c = 新微博客戶(hù)端( WB_AKEY,
  WB_SKEY,
  $oauth_token,
  $oauth_token_secret );
  $msg = $c-&gt;public_timeline();
  if ($msg === false || $msg === null){
  echo "發(fā)生錯誤";
  返回假;
  }
  if (isset($msg['error_code']) &amp;&amp; isset($msg['error'])){
  echo ('Error_code:'.$msg['error_code'].'; Error:'.$msg['error']);
  返回假;
  }
  打印_r($msg);
  通常我們拿到用戶(hù)授權的access token值后,會(huì )保存在我們的user表中,對應我們應用中的賬號。之后我們就不用每次調用新浪微博的API接口都去。認證。
  上面的代碼很簡(jiǎn)單,實(shí)例化WeiboClient對象,然后直接調用接口函數public_timeline獲取返回的信息,如果沒(méi)有錯誤。通常新浪微博api接口返回的數據格式一般是Json格式或者xml格式,而我們這里是用php開(kāi)發(fā)的,那么使用Json格式數據有先天優(yōu)勢,如果返回Json格式數據,直接使用php即可。函數 json_decode() 可以轉換為 PHP 常用的數組格式。

官方客服QQ群

微信人工客服

QQ人工客服


線(xiàn)

亚洲国产精品无码久久大片,亚洲AV无码乱码麻豆精品国产,亚洲品质自拍网站,少妇伦子伦精品无码STYLES,国产精久久久久久久