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

UDF Get access_token - Authorization (oAuth 2.0) hỗ trợ tương tác Google APIs như Gmail, Youtube...

Thảo luận trong 'Chia sẻ mã nguồn' bắt đầu bởi Huân Hoàng, 29/11/16.

  1. 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
    LỜI NÓI ĐẦU

    Mình là dân không chuyên lập trình, việc trình bày với các thuật ngữ, ngôn ngữ liên quan lập trình mình có thể không chính xác lắm, mong các bạn thông cảm.


    *** Để sử dụng UDF này yêu cầu phải có UDF _HttpRequest tại Topic sau: http://autoitvn.com/threads/update6...ttp-vi-du-hinh-anh-cac-buoc-lam-chi-tiet.267/

    *** Sử dụng _HttpRequest để tương tác với Google APIs thì mình đã có bài viết căn bản ở Topic sau: http://autoitvn.com/threads/api-web-va-autoit.492/#post-1909

    Nếu API của dịch vụ Google cần tương tác chỉ yêu cầu cung cấp API-Key hoặc không yêu cầu gì cả thì rất dễ dàng để ta thực hiện, nhưng nếu có yêu cầu Authorization thì sẽ phức tạp hơn rất nhiều, ví dụ:

    [​IMG]

    Ở hình trên request yêu cầu phải có Authorization với Scope là https://mail.google.com/

    *** Google sử dụng oAuth 2.0 để thực hiện Authorization, để hiểu rõ hơn ta có thể đọc ở trang sau https://developers.google.com/identity/protocols/OAuth2WebServer

    Cơ bản là ta phải Tạo Credentials > oAuth Client ID > Exchange Code > Access Token

    *** Các bước để tạo Credentials thì mình đã nói rõ trong ví dụ 2 của Topic http://autoitvn.com/threads/api-web-va-autoit.492/#post-1909, chỉ khác ở bước cuối, thay vì click chọn API Key thì mình sẽ chọn OAuthClient ID. Nếu bạn chưa biết các bước tạo Credentials thì có thể đọc Spoiler dưới:
    - Các bước đầu giống ví dụ 2 của Topic http://autoitvn.com/threads/api-web-va-autoit.492/#post-1909
    - Ở bước cuối, thay vì click chọn API Key thì mình sẽ chọn OAuthClient ID
    [​IMG]

    [​IMG]

    Ở bước dưới ta sẽ nhấn nút Download để lấy file client_secret:

    [​IMG]

    Nội dung của nó là:

    [​IMG]


    GIỚI THIỆU CÁC HÀM CHÍNH CỦA UDF
    GG_SetUp($sEmail, $sPassword, $sClientID, $sSecretID, $sScope, $sAdditionalParam = '')

    GG_GetToken($sExchangeCode = '')

    • Nếu để $sExchangeCode = '' thì nó sẽ tự động tạo một ExchangeCode mới
    • Trả về một mảng gồm 2 phần tử: [0] access_token, [1] refresh_token

    GG_RefreshToken($sRefreshToken)
    • Trả về một mảng gồm 2 phần tử: [0] access_token, [1] refresh_token
    • Khi một access_token hết hiệu lực, thay vì phải tạo một access_token hoàn toàn mới từ Exchange Code thì bạn có thể dùng hàm này để tạo access_token mới từ refresh_token ứng với access_token cũ

    GG_RevokeToken($AccesToken_or_RefreshToken)
    Huỷ một access_token hoặc refresh_token tương ứng​

    GG_ExchangeCode()
    Tạo ExchangeCode.​


    LƯU Ý
    • Để code đạt hiệu quả tốt nhất thì phải sử dụng tài khoản sạch của bạn (không bị check số đt hay các trường hợp check bảo mật khác)
    • 1 ExchangeCode chỉ tạo được 1 AccessToken duy nhất.
    • 1 Access_Token chỉ có 1 "thời gian sống" ngắn. Nếu access_token không còn sử dụng được nữa thì dùng hàm GG_RefreshToken để tạo mới access_token.
    • Hai cách Authorization với Access_Token:
    1. Thêm vào Request Header (param $Additional_Headers của hàm _HttpRequest): Authorization: Bearer <AccessToken> .Ví dụ:
      Mã (AutoIt):
      _HttpRequest(2, 'https://www.googleapis.com/gmail/v1/users/userId/messages/id', '', '', '', 'Authorization: Bearer 1/fFBGRNJru1FQd44AzqT3Zg')
    2. Nối trực tiếp vào Request URL. Ví dụ:
      Mã (AutoIt):
      _HttpRequest(2, 'https://www.googleapis.com/gmail/v1/users/userId/messages/id?access_token=1/fFBGRNJru1FQd44AzqT3Zg')
    • Ghi chú lại access_token và refresh_token đã tạo vào chỗ nào đó để khi cần thì dùng, không cần phải lặp lại việc tạo Token mới (tất nhiên là phải cùng Scope và Dịch vụ google, còn nếu khác thì phải tạo mới lại hoàn toàn.
    • Luôn phải đặt hàm GG_SetUp ở đầu code để các hàm khác có thể truy xuất đến dữ kiện client_ID và client_secret.
    TẢI UDF
    Nội dung bị ẩn:
    **Nội dung ẩn: Nội dung của khối ẩn này chỉ có thể được nhìn thấy bởi các thành viên của (các nhóm: nhóm Administrative, Moderating, Registered). **
    MỘT SỐ ẢNH VỀ CODE MẪU VÍ DỤ

    [​IMG]

    [​IMG]
     
  2. emga9xkc

    emga9xkc Thành viên năng động
    • 43/45

    Tham gia ngày:
    7/3/16
    Bài viết:
    232
    Đã được thích:
    205
    khâm phục bác, nhiều bước vậy mà bác cũng nghiên cứu ra được
     
    kamsamita1 thích bài này.
  3. sgdavid

    sgdavid Thành viên
    • 8/11

    Tham gia ngày:
    23/10/15
    Bài viết:
    28
    Đã được thích:
    12
    Thanks a, coder autoit pro nhất mà e từng biết:autoit:
     
    kamsamita1 thích bài này.
  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
    Phục bác thật. Ỉm ỉm mấy ngày rồi bùng phát cái udf mới luôn =))
     
    kamsamita1 thích bài này.
  5. duc

    duc Thành viên
    • 8/11

    Tham gia ngày:
    28/2/16
    Bài viết:
    38
    Đã được thích:
    23
    bác Huân Hoàng giúp e cái upload video lên ytb được k ạ
     
    kamsamita1 thích bài này.
  6. boybenqn

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

    Tham gia ngày:
    16/4/16
    Bài viết:
    6
    Đã được thích:
    5
    sao chạy cứ báo lỗi ta "Không lấy được Token" :(:(
     
  7. 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
    Do thằng google nó thay đổi cách thức đăng nhập đó mà thým, nó mới cập nhật cách đây tầm 2 tháng :D Khi nào rảnh iêm sẽ làm lại :p
     
  8. ntprohd

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

    Tham gia ngày:
    21/1/16
    Bài viết:
    10
    Đã được thích:
    8
    Update đi bác ơi
     
  9. nguyenvl159

    nguyenvl159 Nguyên
    • 3/6

    Tham gia ngày:
    12/7/16
    Bài viết:
    25
    Đã được thích:
    3
    truonghieuhust thích bài này.
  10. 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
    Đã update, yêu cầu _HttpRequest ver14 trở lên :p
     
    locvipvip and dechut like this.
  11. quynhpham92

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

    Tham gia ngày:
    17/4/19
    Bài viết:
    1
    Đã được thích:
    0
    Cái này chỉ áp dụng cho các sản phẩm của Google thôi phải không ạ?.
    Ví dụ như login vào diễn đàn autoitvn.com hay tiki.vn và các trang web ngoài ..... bằng nút "Đăng nhập bằng google" thì có ứng dụng được cái UDF này không ?
     
  12. #Rainy# Hoàng Vũ IT

    #Rainy# Hoàng Vũ IT Hoàng Vũ IT Moderator
    • 43/45

    Tham gia ngày:
    21/11/16
    Bài viết:
    404
    Đã được thích:
    122
    Tất nhiên là ... không :v
     
  13. Lam Nguyen van

    Lam Nguyen van Thành viên mới
    • 1/6

    Tham gia ngày:
    10/9/19
    Bài viết:
    2
    Đã được thích:
    0
    sao mình toàn báo lỗi "Không lấy được Token"
     
  14. ankien

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

    Tham gia ngày:
    14/10/20
    Bài viết:
    1
    Đã được thích:
    0
    có bản update chưa bạn?
     
  15. #Rainy# Hoàng Vũ IT

    #Rainy# Hoàng Vũ IT Hoàng Vũ IT Moderator
    • 43/45

    Tham gia ngày:
    21/11/16
    Bài viết:
    404
    Đã được thích:
    122
    Sẽ không có update nữa do chủ topic đã ....
     
  16. 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
    Huân lâu rồi không còn liên lạc đc, nếu các bạn còn hứng thú mình sẽ viết lại UDF chức năng tương tự
     
    banhmikho and Thịnh-Autoit like this.
  17. banhmikho

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

    Tham gia ngày:
    26/4/22
    Bài viết:
    1
    Đã được thích:
    0
    E mới học Autoit, tới đoạn này bị tịt 3 hôm nay mà không Authorize được, a hỗ trợ e với đc ko ạ
     
  18. mrchinh5000

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

    Tham gia ngày:
    21/11/15
    Bài viết:
    19
    Đã được thích:
    4
    bạn vọc udf trên là được, mình vẫn dùng 2 năm nay để auto send mail theo event mình set, thay đổi theo google api nhé bạn
     

Chia sẻ trang này

Đang tải...