• test đăng bài
  • test đăng bài

    Noname > 16-07-15, 06:08 PM

    Mới đăng bài bị lỗi. Sao đây tadfgd
  • RE: test đăng bài

    Noname > 25-08-15, 02:22 PM

    Googdrive...tiếp nào

    Sau thời gian nghiên cứu và mày mò, có vẻ công cụ tải file, upload file lên googdrive bằng VBA là hoàn toàn khả thi.

    Hôm nay tôi xin phép giới thiệu với các bạn phần đầu của nỗ lực này nhé.

    Trước hết, để tiện lợi cho việc viết bài, tôi sẽ lấy một ứng dụng mở, tôi sử dụng làm thí nghiệm.



    A. Để làm việc được với Googdrive từ VBA hoặc bất cứ ứng dụng nào không phải là giao diện Web, bạn cần thỏa mãn được mấy điều kiện sau:

    + Có một Ứng dụng được tạo ra để truy cập vào các dịch vụ của Google

    + Ứng dụng này được tạo ra với các thông số tối thiểu sau

    * AppID (Mã ứng dụng). Trong ví dụ của tôi là [openstore-1034]

    * ClientID (Mã ứng dụng khách). Trong ví dụ của tôi là ["759747656687-rjkm22bit7ob5tufc5sbgg1gsuj48fme.apps.googleusercontent.com"]

    * ClientSecret (mã bí mật của ứng dụng khách). Trong ví dụ của tôi là ["Jf5DqXlZ2G3cOtUtHIraaxvQ"]

    + Khi ứng dụng này truy cập vào bất cứ dịch vụ nào, người dùng cần phải truy cập vào tài khoản gmail sau đó phải chấp thuận cho ứng dụng sử dụng.



    (Ở đây tôi gọi ứng dụng khách viết trên VBA chẳng hạn chung là Ứng dụng)



    Cơ chế làm việc để thao tác được với các dịch vụ của google như sau

    Bước 1: Người dùng đăng nhập vào Google với tài khoản và mật khẩu riêng;

    Bước 2: Ứng dụng gửi thông tin ClientID vf ClientSecret vào Google trong đó thông báo cơ chế xác thực là nhận mã trực tiếp hoặc thông qua một trang web trung gian nào đó.

    Bước 3: Google sẽ hiển thị cơ chế để người dùng chấp thuận sử dụng ứng dụng này hay không.

    Bước 4: Sau khi người dùng chấp thuận, Google sẽ gửi 1 mã xác thực ở đây gọi là AuthorisationCode về trình duyệt hoặc trang web trung gian (ở đây tôi không dùng cơ chế này mà dùng cơ chế gửi xác thực qua trình duyệt).

    Bước 5: Ứng dụng sử dụng cơ chế đặc biệt nào đó để nhận được mã xác thực này và gửi lại cho Google.

    Bước 6: Google khi nhận được mã xác thực do ứng dụng gửi lại sẽ chuyển cho Ứng dụng một mã truy cập gọi là Token trong đó quy định Mã, thời gian hết hạn.



    Từ lần này, với Token này, ứng dụng sẽ thỏa thích vào khu vực dịch vụ mà nó đăng ký mà không cần phải đăng nhập với tên người dùng và mật khẩu nữa.

    Sau một thời gian mã token hết hạn thì Ứng dụng sẽ phải gửi lệnh làm mới Token và bắt đầu thực hiện lại từ bước 5.



    Với phần demo trong bài trước, tôi đã thí nghiệm cho các bạn thấy được việc đi qua hết các bước một cách hoàn toàn tự động với Access và trình duyệt InternetExplorer.

    Riêng với phần gửi file, tải file, xóa file ...vv thì trước đây tôi chưa giải quyết được vì chưa nắm được bí quyết của việc trao đổi thông tin với máy chủ của Google.

    Do đó tôi đã phải nhờ đến một phần mềm là rclone để thực hiện việc này. Nói chung tiếp cận này là khá an toàn vì ứng dụng rclone được viết rất chuẩn mực.



    Tuy vậy, tôi vẫn thấy bất tiện và muốn làm độc lập bằng VBA và không cần nhờ vả gì nữa. Và đó chính là chủ đề bài viết này.



    B. Làm thế nào để tương tác với GoogleDrive.

    Tất nhiên phải cảm ơn Google là đã thiết kế ra hệ thống trợ giúp thật tốt. Đầu tiên, tôi vào trang này

    https://developers.google.com/drive/v2/reference/files

    Tại trang này Google hướng dẫn khá chi tiết việc làm thế nào để thao tác với đối tượng tập tin trong GoogleDrive.



    Lấy ví dụ: Tôi muốn liệt kê các file trong Kho GoogleDrive của mình.

    Đầu tiên tôi sẽ chọn và đọc hướng dẫn ở đây

    https://developers.google.com/drive/v2/r...files/list
  • RE: test đăng bài

    Noname > 25-08-15, 02:24 PM

    Bỏ qua phần đầu, ta chú ý đến mục Request. Google thông báo rằng lệnh này được thực hiện qua phương thức Http với HTTP request trong đó công cụ thực hiện việc lấy danh sách các đối tượng trong Google drive như trong phần dưới đây.

    G ET https://www.googleapis.com/drive/v2/files

    Chú ý là

    G ET = Phương thức (trong phương thức Http request ta có P USH, P OST ..vv)

    (**) Sau G ET là https://www.googleapis.com/drive/v2/files, đây chính là địa chỉ ứng dụng thực hiện việc thao tác với File.



    Giờ ta đi tiếp, bỏ qua các Parameters, vì ta sẽ quan tâm đến nó sau này. Nếu các bạn biết tiếng Anh thì cũng đọc được.



    Đến phần Authorization ta thấy phần quy định Scope. Đây chính là phạm vi thao tác của công cụ đã nói tại mục (**) trên đây.

    Cái này chúng ta cũng chưa cần quan tâm.



    Đi tiếp đến Request body, phần này không có quy định cụ thể gì.

    Đến phần Response. Google nói rằng, nếu người dùng xác thực thành công và gửi thông tin thành công, Google sẽ phản hồi bằng thông điệp có dạng

    Mã:
    {
    [/font][/size][/color]
    [color=#111111][size=small][font=Tahoma,Verdana,Arial,sans-serif]  "kind": "drive#fileList",
    [/font][/size][/color]
    [color=#111111][size=small][font=Tahoma,Verdana,Arial,sans-serif]  "etag": etag,
    [/font][/size][/color]
    [color=#111111][size=small][font=Tahoma,Verdana,Arial,sans-serif]  "selfLink": string,
    [/font][/size][/color]
    [color=#111111][size=small][font=Tahoma,Verdana,Arial,sans-serif]  "nextPageToken": string,
    [/font][/size][/color]
    [color=#111111][size=small][font=Tahoma,Verdana,Arial,sans-serif]  "nextLink": string,
    [/font][/size][/color]
    [color=#111111][size=small][font=Tahoma,Verdana,Arial,sans-serif]  "items": [
        files Resource
      ]
    [/font][/size][/color]
    [color=#111111][size=small][font=Tahoma,Verdana,Arial,sans-serif]}
  • RE: test đăng bài

    Noname > 25-08-15, 02:47 PM

    Post
    GET
    Insert
    Delete
      .Open "GET", url_destino & filterStr
    GET = Phương thức (trong phương thức Http request ta có PUSH, POST ..vv)
  • RE: test đăng bài

    Noname > 28-08-15, 11:41 AM

    [b] *[/b]
  • RE: test đăng bài

    Noname > 28-08-15, 01:59 PM

    <iframe width="853" height="480" src="//www.youtube.com/embed/qpgTC9MDx1o" frameborder="0" allowfullscreen></iframe>
  • RE: test đăng bài

    Noname > 06-09-15, 11:37 PM

    delete * form test
  • RE: test đăng bài

    Noname > 06-09-15, 11:39 PM

    SqlStr="DELETE * F ROM [Tên bảng] WHERE [Tên công văn]= '[Giá trị

        đang chọn trong list box]';"
  • RE: test đăng bài

    Noname > 11-09-15, 10:20 AM

    Mới upgrade phiên bản Mybb 18.6
    Post test