
字节跳动小程序第三方sdk
=======================

快速开始
--------

安装
^^^^

.. code-block:: sh

   pip install bytedance

引入和初始化
^^^^^^^^^^^^

.. code-block:: py

   from bytedance import ByteDance

   tt_app = ByteDance(
       # 核心配置
       app_id='app_id',
       app_secret='app_secret',
       # 支付相关配置，可以不配置
       mch_id='mch_id',
       mch_secret='mch_secret',
       mch_app_id='mch_app_id',
       access_token_type='auto', # 保存access_token的方法
       redis={'host':'127.0.0.1','port':6379}, # redis 的配置
       ac_path='path' # 如果指定access_token_type = file的时候，指定路径用，不指定就是根目录
       )

.. list-table::
   :header-rows: 1

   * - 参数名
     - 类型
     - 默认值
     - 说明
   * - app_id
     - str
     - -
     - 小程序的appid
   * - app_secret
     - str
     - -
     - 小程序的secret
   * - mch_id
     - str
     - -
     - 商户id
   * - mch_secret
     - str
     - -
     - 商户密钥
   * - mch_app_id
     - str
     - -
     - 商户appid
   * - access_token_type
     - str
     - auto
     - 保存access_token的方法，可选项有auto、redis、file；auto会检查是否有redis，有就启用redis存access_token；file就会把access_token存到根目录
   * - redis
     - dict
     - {"host":"redis","port":6379,"decode_responses":True}
     - 当access_token_type配置为auto或者redis的时候，可以配置redis连接参数，参考\ ``https://pypi.org/project/redis/``\ 文档
   * - ac_path
     - str
     - -
     - access_token 保存文件路径，当access_token_type配置为file或者auto下没有安装redis库的时候启用，默认是根目录


API使用
^^^^^^^

登录code换取session和openid
~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. code-block:: py

   data = tt_app.code2Session(code='code')

   print(data)

   print(data.openid)

.. list-table::
   :header-rows: 1

   * - 参数名
     - 类型
     - 默认值
     - 说明
   * - code
     - str
     - -
     - 从前端小程序获取到的code
   * - anonymous_code
     - str
     - -
     - 从前端小程序获取到的anonymous_code，头条系app可能是在匿名下使用，这个时候就只能拿到anonymous_code


..

   code和anonymous_code均可登录

   返回值可以使用data.openid这种方式访问属性

   官方文档：\ ``https://microapp.bytedance.com/docs/zh-CN/mini-app/develop/server/log-in/code-2-session``


set_user_storage 存用户数据
~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. code-block:: py

   data = tt_app.set_user_storage(openid, session_key, kv_list, sig_method="hmac_sha256")
   print(data)

..

   更多信息查看官方文档

   ``https://microapp.bytedance.com/docs/zh-CN/mini-app/develop/server/data-caching/set-user-storage``


remove_user_storage 删除用户数据
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. code-block:: py

   data = tt_app.remove_user_storage(openid, session_key, key_list, sig_method="hmac_sha256")
   print(data)

..

   更多信息查看官方文档

   ``https://microapp.bytedance.com/docs/zh-CN/mini-app/develop/server/data-caching/remove-user-storage``


create_qrcode 获取小程序/小游戏的二维码
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. code-block:: py

   data = tt_app.create_qrcode(appname=None, path=None, width=None, line_color=None, background=None, set_icon=None)

..

   请注意，这个api如果正确将返回完整的response而不是json，因为内容是包含了一个二维码图片

   错误的话依然是json数据

   更多信息查看官方文档

   ``https://microapp.bytedance.com/docs/zh-CN/mini-app/develop/server/qr-code/create-qr-code``


template_send 发送模板消息
~~~~~~~~~~~~~~~~~~~~~~~~~~

.. code-block:: py

   data = tt_app.template_send(touser, template_id, form_id, data, page=None)

..

   更多信息查看官方文档

   ``https://microapp.bytedance.com/docs/zh-CN/mini-app/develop/server/model-news/send``


text_antidirt 文本内容检测
~~~~~~~~~~~~~~~~~~~~~~~~~~

.. code-block:: py

   resp = tt_app.images_antidirt(tasks=[{"content": "要检测的文本"}])
   print(data, '>>images_antidirt')

..

   更多信息查看官方文档

   ``https://microapp.bytedance.com/docs/zh-CN/mini-app/develop/server/content-security/content-security-detect``


images_antidirt 图片检测
~~~~~~~~~~~~~~~~~~~~~~~~

.. code-block:: py

   data = tt_app.images_antidirt([
           {
           "image": "http://pic.jj20.com/up/allimg/mn02/062QZ1021Z62P10251-0.jpg"
           }
       ])
   print(data, '>>images_antidirt')

..

   更多信息查看官方文档

   ``https://microapp.bytedance.com/docs/zh-CN/mini-app/develop/server/content-security/picture-detect``


subscribe_send 订阅消息推送
~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. code-block:: py

   data = tt_app.subscribe_send(tpl_id, open_id, data, page=None)

..

   更多信息查看官方文档

   ``https://microapp.bytedance.com/docs/zh-CN/mini-app/develop/server/subscribe-notification/notify``


官方文档
^^^^^^^^

https://microapp.bytedance.com/docs/zh-CN/mini-app/develop/server/interface-request-credential/get-access-token
