1. Tải bản cài đặt AutoIT mới nhất

    Chào Khách. Nếu bạn mới tham gia và chưa cài đặt AutoIT.
    Vui lòng vào topic trên để tải bản AutoIT mới nhất nhé
    Dismiss Notice
  2. Quy định và nội quy

    Chào Khách. Vui lòng đọc kỹ nội quy và quy định của diễn đàn
    Để tránh bị ban một cách đáng tiếc nhé!
    Dismiss Notice
  3. Hướng dẫn chèn mã AutoIT trong diễn đàn

    Chào Khách. Vui lòng xem qua bài viết này
    Để biết cách chèn mã AutoIT trong diễn đàn bạn nhé :)
    Dismiss Notice

Đã trả lời API (web) và AutoIT

Thảo luận trong 'Thảo luận chung - Hỏi đáp' bắt đầu bởi Ngọc Yến, 11/8/16.

  1. Ngọc Yến

    Ngọc Yến Thành viên
    • 13/23

    Tham gia ngày:
    11/6/16
    Bài viết:
    24
    Đã được thích:
    27
    Em là newbie ạ. Thấy các bác auto các thứ bảo dùng API nhanh hơn. Các bác có thể giải thích cho em API là gì và cho em ít ví dụ được không ạ. Cảm ơn vì đã đọc :D

     
  2. Huân Hoàng

    Huân Hoàng Administrator Thành viên BQT Administrator Super Moderator
    • 93/113

    Tham gia ngày:
    29/9/15
    Bài viết:
    642
    Đã được thích:
    1,181
    API window, hệ thống đồ họa, cơ sở dữ liệu, mạng, dịch vụ web, trò chơi... Cho hỏi bạn hỏi API gì ? :)):)):))
     
    kamsamita1 and Vô Danh like this.
  3. Huân Hoàng

    Huân Hoàng Administrator Thành viên BQT Administrator Super Moderator
    • 93/113

    Tham gia ngày:
    29/9/15
    Bài viết:
    642
    Đã được thích:
    1,181
    À, đọc ngoài shoutbox thì chắc đang hỏi về API của các trang web :rolleyes:
     
    kamsamita1 and Ngọc Yến like this.
  4. Ngọc Yến

    Ngọc Yến Thành viên
    • 13/23

    Tham gia ngày:
    11/6/16
    Bài viết:
    24
    Đã được thích:
    27
    vâng bác ví dụ em muốn tìm hiểu api của facebook.Ví dụ muốn tự động đăng bài thì làm như nào bác.Bác chỉ em từ khoá cũng được ạ :D
     
    kamsamita1 thích bài này.
  5. Vinh Phạm

    Vinh Phạm Super Moderator Thành viên BQT Super Moderator
    • 33/34

    Tham gia ngày:
    13/12/15
    Bài viết:
    53
    Đã được thích:
    134
    Nơi ở:
    HCM
    kamsamita1 and Ngọc Yến like this.
  6. Huân Hoàng

    Huân Hoàng Administrator Thành viên BQT Administrator Super Moderator
    • 93/113

    Tham gia ngày:
    29/9/15
    Bài viết:
    642
    Đã được thích:
    1,181
    Câu trả lời tốt nhất
    API mà các trang web cung cấp cho người lập trình các hàm tương tác với CSDL nhanh chóng hơn so với bình thường, ít phải qua các bước bảo mật (như captcha chẳng hạn) rườm rà phức tạp. Nói nghe dữ dội chứ thực ra cũng chỉ là request với các API Key và các mẫu URL, data xác nhận gói dữ liệu muốn nhận về... mà trang web đó cung cấp cho người dùng (đã đăng ký hoặc được quản trị cung cấp) mà thôi.

    1 số ví dụ:

    Ví dụ 1 Trang http://menly.ml/
    - Bình thường bạn muốn Tạo Paste mới ở trang này bạn cần phải điền captcha của google thì nó mới thực hiện việc tạo.
    - Nếu bạn code request như bình thường thì chắc chắn bạn không thể có cách nào để trả lời captcha đó bằng các request.
    - Nhưng ở đây, nếu bạn được quản trị cung cấp 1 cái api key thì việc tạo 1 paste mới chỉ đơn giản là gửi 1 dòng request duy nhất:
    _HttpRequest(1, 'http://menly.ml/api/create?apikey=' & $APIKey, 'title=' & _URIEncode($TieuDe) & '&name=' & _URIEncode($NguoiDang) & '&lang=' & $NgonNgu & '&private=' & $RiengTu & '&expire=' & $HanSuDung & '&text=' & _URIEncode($NoiDung))
    Cái chỗ Data để gửi ('title=' &....$NoiDung) tại sao mình biết nó có mẫu như vậy ? Rất đơn giản, tìm trong nội dung hướng dẫn sử dụng API của trang đó. Như ở đây là trang menly thì http://menly.ml/api
    - Ứng dụng liên quan đến ví dụ 1: http://www.opdo.vn/2016/06/menly-app.html


    Ví dụ 2 Các ứng dụng của Google: Hầu hết các ứng dụng của Google đều được cung cấp API. Mình sẽ lấy ví dụ về Youtube.
    - Để sử dụng các API của Google thì trước tiên mình phải có tài khoản Google, sau đó vào trang: https://console.developers.google.com/ để lấy mã API mà Google cung cấp. Tại sao mình biết cái đường link này ? Đơn giản chỉ việc search "google API" là ra hàng tá link cho bạn tham khảo.
    - Sau khi truy cập vào đường dẫn trên, điền tài khoản thì mình sẽ vào trang như sau:
    [​IMG]

    + Bấm tạo Project mới và chờ vài giây. Trang chọn API sẽ hiện ra:
    [​IMG]

    + Đang ví dụ về Youtube nên mình sẽ chọn các Youtube API. Trước tiên chọn YouTube Data API, ta sẽ vào trang như hình:
    [​IMG]

    + Click chọn Enable (1) và chờ vài giây để kích hoạt API này. Sau đó click chọn nút mũi tên (2) để quay lại trang chọn API. Nếu bạn cần tương tác với các dịch vụ khác của Youtube như Analytics hay Reporting thì vào mấy trang đó và Enable chúng luôn.
    + Sau khi Enable xong, ta chọn Credentials ở menu bên trái:
    [​IMG]

    để vào trang sau:
    [​IMG]

    + Chọn API Key hoặc OAuth Client ID tuỳ mục đích sử dụng, ở đây chọn API Key > rồi chọn Server Key > rồi bấm Create (Tạo) > Vậy là bạn đã có được API Key Youtube rồi đó
    [​IMG]

    + Vậy làm sao để biết Mẫu (form) URL và data để request tương tác với Youtube bằng API. Về lại trang Library và chọn API mình đã kích hoạt:
    [​IMG]

    sẽ thấy mục Documentation
    [​IMG]

    Click vào để chuyển đến trang hướng dẫn dùng API Youtube, sau đó chọn tab REFERENCE để đọc tài liệu hướng dẫn.
    [​IMG]

    Đọc hiểu tài liệu xong, giờ ví dụ mình cần request để lấy tất cả link trong một Playlist Youtube thì chỉ cần request như sau:
    Local $URL = 'https://www.googleapis.com/youtube/v3/playlistItems?part=snippet,id' & '&maxResults=50&key=' & $ApiKey & '&playlistId=' & $IDPlaylist
    _HttpRequest(3, $URL)
    [​IMG]

    - Ứng dụng liên quan đến ví dụ 2: http://autoitvn.com/threads/4-4-aio...-phim-up-anh-hang-loat-len-1-so-host-tot.261/

    Ví dụ 3 Facebook
    - Để tương tác bằng API FB thì chúng ta cần app_token hoặc access_token. Làm sao để lấy được chúng ?
    - Vào trang https://developers.facebook.com/docs/ sau đó nhấn Register (hoặc Đăng ký), điền đầy đủ thông tin.
    [​IMG]

    - Ta tạo một ứng dụng mới:
    [​IMG]

    - Tạo xong ta sẽ được như hình sau, chọn Tools & Support (lưu ý là mình dùng ngôn ngữ English, còn tiếng Việt sẽ khác)
    [​IMG]

    - Ở trang kế tiếp ta sẽ lấy được access_token bằng 1 trong 2 đường dẫn như hình:
    [​IMG]

    - Sau khi có được access_token ta bắt đầu nghiên cứu tài liệu về api facebook. Vào trang sau:
    https://developers.facebook.com/docs/graph-api/reference/v2.7
    - Ví dụ đọc một status trên tường nhà:
    [​IMG]

    Ta request với URL là:
    $URL = 'https://graph.facebook.com/2.7/' & $StatusID & '?access_token=' & $AccessToken

    Vài ví dụ đơn giản cho bạn tham khảo, để đọc hiểu tài liệu bạn cần xem thêm các example mà trang cung cấp. Thân. :p:p:p
     
  7. Vinh Phạm

    Vinh Phạm Super Moderator Thành viên BQT Super Moderator
    • 33/34

    Tham gia ngày:
    13/12/15
    Bài viết:
    53
    Đã được thích:
    134
    Nơi ở:
    HCM
    Còn hơn 1 bài riêng nữa thým @@
     
    kamsamita1 thích bài này.
  8. Huân Hoàng

    Huân Hoàng Administrator Thành viên BQT Administrator Super Moderator
    • 93/113

    Tham gia ngày:
    29/9/15
    Bài viết:
    642
    Đã được thích:
    1,181
    @Vinh Phạm có ý đồ hết đó thým ơi chứ không phải iêm làm màu đâu =)) Chắc thým chưa biết vụ 4rum này 1 bài viết giới hạn tối đa 20 hình ảnh thôi nên iêm chơi thế này rồi trỏ từ bài hướng dẫn httprequest qua đây luôn, chứ viết luôn ở bài kia nó không cho phép :))
     
  9. Ngọc Yến

    Ngọc Yến Thành viên
    • 13/23

    Tham gia ngày:
    11/6/16
    Bài viết:
    24
    Đã được thích:
    27
    Em đã xúc động khi thấy câu trả lời của bác. Cảm ơn bác rất nhiều.Thực sự bác rất nhiệt tình :D
     
    kamsamita1 thích bài này.
  10. Tricksy

    Tricksy Thành viên mới
    • 1/6

    Tham gia ngày:
    19/8/16
    Bài viết:
    2
    Đã được thích:
    2
    Thật sự là quá chi tiết. Thanks! (y)
     
    kamsamita1 thích bài này.
  11. tuoitre

    tuoitre Thành viên năng động
    • 28/34

    Tham gia ngày:
    15/9/15
    Bài viết:
    135
    Đã được thích:
    89
    ở phần ví dụ facebook : bác cho em hỏi StatusID này làm sao lấy ạ ? mà em tìm mãi cũng không thấy làm sao để có được cái dòng url như của bác =.='' mong bác phân tích giúp cho 1 ví dụ đê em thông não...
     
    kamsamita1 thích bài này.
  12. PMHCT

    PMHCT Thành viên mới
    • 3/6

    Tham gia ngày:
    16/9/16
    Bài viết:
    8
    Đã được thích:
    7
    Nơi ở:
    MS-DOS A:\
    Có lẻ nick bạn giống nữ, nên mấy boy ở đây tranh nhau support. Sướng nhé. ^^
     
    kamsamita1 thích bài này.
  13. Tungtata

    Tungtata Tà tà mà sống ~ Thành viên BQT Administrator
    • 93/113

    Tham gia ngày:
    25/8/15
    Bài viết:
    289
    Đã được thích:
    924
    Nơi ở:
    Hà Nội
    Thấy gái là mắt sáng lên hà :/
    Copy ra 1 topic nữa đi thím :3 cho ae cần tìm thì có thể thấy
     
    GsmLongBien and kamsamita1 like this.
  14. Tungtata

    Tungtata Tà tà mà sống ~ Thành viên BQT Administrator
    • 93/113

    Tham gia ngày:
    25/8/15
    Bài viết:
    289
    Đã được thích:
    924
    Nơi ở:
    Hà Nội
    có cần sửa giới hạn hình ảnh k thím?
     
    kamsamita1 thích bài này.
  15. tuoitre

    tuoitre Thành viên năng động
    • 28/34

    Tham gia ngày:
    15/9/15
    Bài viết:
    135
    Đã được thích:
    89
    Cho tớ hỏi sao lại ra được cái url như vầy =.='' tớ tìm mãi mà không thấy hướng dẫn, với lại cho tớ xin url về post bài lên fb với. tớ không biết method post của http phải viết tnao cả =.='' mò mãi không ra chi cả..
     
    kamsamita1 thích bài này.
  16. Only Love

    Only Love Thành viên
    • 18/23

    Tham gia ngày:
    8/9/15
    Bài viết:
    69
    Đã được thích:
    59
    Mình thấy cũng đâu có khó @tuoitre . Giờ ví dụ bạn muốn post tường nhà nha, bạn vô trang https://developers.facebook.com/docs/graph-api/reference/v2.8/user/feed để xem nó hướng dẫn cách post. Vô trang đó bạn kéo xuống mục:

    Rồi, thì bạn thấy gì nào:
    • Thứ 1 là: https://graph.facebook.com là link mặc định của graph fb api nha, bạn nối vào /v2.8/me/feed thì được URL cần request là https://graph.facebook.com/v2.8/me/feed, ở đây me là mặc định rút gọn của FB tượng trưng cho ID của bạn, nếu post lên tường nhà người khác thì thay bằng ID chính xác của người đó.
    • Thứ 2 là dòng: message=This+is+a+test+message, đó là thông số truyền chính vào URL, bạn nối vô URL trên bởi dấu ?, được "https://graph.facebook.com/v2.8/me/feed?message=This+is+a+test+message". Thì mình sẽ đặt biến cho message trên để thay đổi theo ý mình, lưu ý phải bỏ nó vô _URIEncode để phòng trường hợp thông điệp bạn muốn post là tiếng Việt hoặc có xuống hàng, ký tự đặc biệt... gì đó nha:
    $message = "Đây là ví dụ của tui"
    "https://graph.facebook.com/v2.8/me/feed?message=" & _URIEncode($message)

    • Thứ 3 là hãy chú ý Permissions, nó bảo tạo access token với quyền publish_actions. Giờ bạn đọc bài của bạn Huân Hoàng phần Facebook, làm theo các bước cho đến khi đến hình thứ 2 từ dưới lên, bạn nhấp vào API Graph Explorer (Test, Create and Author....) được đánh dấu số (1) đó, và làm theo các bước sau:
    Bấm Get User Access Token
    [​IMG]

    Chọn quyền publish_actions theo yêu cầu

    [​IMG]

    Zị là đã có access_token (Mã truy cập) rồi:
    [​IMG]

    Code xong xuôi hết ùi đó:
    #include <_httprequest.au3>
    $access_token = "access_token_của_bạn"
    $message = "Đây là ví dụ của tui"
    $Post = _HttpRequest(2,"https://graph.facebook.com/v2.8/me/feed?message=" & _URIEncode($message), "access_token=" & $access_token)
    MsgBox(0, "id", $Post)

    Theo như trang hướng dẫn thì nếu post thành công thì sẽ trả về id của bài post:
    If successful: The newly created post ID
    Nên nếu MsgBox(4096, 0, $Post) mà hiện id thì đã post tốt đẹp rùi đó, mở tường nhà FB của bạn để xem kết quả ^^

    Đó, quá đơn giản mà phải hem ^^


    Edit: Quên nói thêm, bên dưới Publishing phần Fields ngay dưới Permission bạn thấy cái bảng:
    Name|Description|Type

    Đó là những thông số truyền phụ nối vào URL bằng ký tự &, có cũng được hông có cũng hông sao.
    • Tương tự, giả dụ mình muốn bài post có tag bạn bè muốn tag thì: "https://graph.facebook.com/v2.8/me/feed?message=" & _URIEncode($message) & "&tags=ID_của_bạn_bè_muốn_tag". Nhưng mà bạn request xong rùi thì thấy nó không thành công, vì sao vậy ta ? Bạn đọc phần Chú thích (Description) của thông số tags nha: You cannot specify this field without also specifying a place. À, thì ra muốn có tag thì phải truyền thêm thông số phụ place nó mới chịu. Sửa lại URL request có thêm thông số phụ place là ok.
    • Ví dụ tiếp theo nha, giờ mình muốn bài post có luôn cả hình/album đính kèm trong đó thì sao nhỉ? Kiểm tra hết phần Fields coi có dính dáng gì hem, ồ thấy rùi, thông số phụ object_attachment với chú thích: Facebook ID for an existing picture in the person's photo albums to use as the thumbnail image. They must be the owner of the photo, and the photo cannot be part of a message attachment. À, nó nói hình muốn đính kèm phải là hình của chính mình đăng, còn ID của album hoặc photo ở đâu ra nhể ? Thì bạn click vào album/photo mình đăng rồi nhìn thanh địa chỉ của trình duyệt thì thấy thui ấy mà, hoặc bạn có thể dùng graph api để post ảnh mới, kết quả của request post ảnh là ID của ảnh, zậy thui.
    • Mình tin bây giờ bạn có thể thông thạo cách post tường nhà bằng api ùi đó, thử thực hiện các mục khác xem, không khó đâu ^^
     
    Chỉnh sửa cuối: 27/11/16
    kamsamita1, Huân Hoàng and tuoitre like this.
  17. tuoitre

    tuoitre Thành viên năng động
    • 28/34

    Tham gia ngày:
    15/9/15
    Bài viết:
    135
    Đã được thích:
    89
    cám ơn bác spam :) . em bí là vì không biết phương thức post nó như thế nào, nay được bác chỉ cho em hướng dẫn phương thức post theo http request thì em cũng đã vỡ ra vì chưa thử kiểu này =.=''. em toàn mò theo kiểu url, giống như phương thức get vậy, ví dụ như em muốn lấy thông tin thì em lại học theo bác hoàng https://graph.facebook.com/2.7/me & '?access_token=' & $AccessToken... đến khi vào phương thức post thì e lại bí :(. giờ em cám ơn bác đã thông tường tận em :>
     
    kamsamita1 thích bài này.
  18. Huân Hoàng

    Huân Hoàng Administrator Thành viên BQT Administrator Super Moderator
    • 93/113

    Tham gia ngày:
    29/9/15
    Bài viết:
    642
    Đã được thích:
    1,181
    @tuoitre UDF _httprequest nó hoạt động kiểu param $DataToSend nếu là rỗng thì sẽ tự nhận là phương thức GET, nhưng ví dụ trang hướng dẫn Request post tường nhà nó bảo là phương thức POST, vậy nếu nối "?access_token=<access_token>" vào request url và không điền gì param $Data2Send hết => sai (vì nó sẽ GET chứ không phải POST). Vì vậy khi làm theo cách nối url phải để ý phương thức GET, POST... Code của @spamdaica có thể được viết lại như sau:

    Mã (AutoIt):
    #include <_httprequest.au3>
    $message = "Ví dụ"
    MsgBox(4096, 'id', _HttpRequest(2, 'https://graph.facebook.com/v2.8/me/feed?access_token=<access_token>&message=' & _URIEncode($message), '', '', '', '', 'POST'))
     
    kamsamita1 and tuoitre like this.
  19. tuoitre

    tuoitre Thành viên năng động
    • 28/34

    Tham gia ngày:
    15/9/15
    Bài viết:
    135
    Đã được thích:
    89
    tớ hỏi thêm tí vì sao lại có dấu ? giữ feed với access vầy ?
    mà theo như code của cậu thì tớ thấy cậu có điền vào $Data2Send đâu ? thế là get mà ?
     
    kamsamita1 thích bài này.
  20. Huân Hoàng

    Huân Hoàng Administrator Thành viên BQT Administrator Super Moderator
    • 93/113

    Tham gia ngày:
    29/9/15
    Bài viết:
    642
    Đã được thích:
    1,181
    @tuoitre
    1/ https://graph.facebook.com/v2.8/me/feed là url chính, muốn nối param vào nó thì trước tiên thêm ?, giữa các param với nhau thì &
    2/ Mặc định không có $Data2Send thì GET, có thì POST, nhưng nếu muốn force cho nó request theo cách thức mình muốn thì set $OVerb
    :p
     
    kamsamita1 and tuoitre like this.

Chia sẻ trang này

Đang tải...