小编pau*_*aus的帖子

如何使用Telegram API实现授权?

我想使用PHP实现多个授权,以便与Telegram REST API进行交互.

我想解决什么任务?嗯,这很简单:几十个用户(他们都有像这里的卡玛(+ 10,-2,+ 1000等)和相关的群体分类:网站管理员和客户)在我的网站上有一个用户档案.在他们达到一定数量的carma之后,由于他们在他们的个人资料中被授权,他们将根据为他们自动生成的Telegram加入私人聊天.

经过一些研究,我发现它非常复杂,因为:

  1. 我从未有过硬件绑定社交网络的API实现经验.
  2. 我看了一下https://core.telegram.org/api/auth,但是如何使用PHP或任何其他语言实现这些函数(例如auth.sendCode)是完全不明显的.如果这些命令应该作为JSON发送到服务器,那么它看起来不像JSON:

      auth.sentCode#efed51d9 phone_registered:Bool phone_code_hash:string send_call_timeout:int is_password:Bool = auth.SentCode;
    
    Run Code Online (Sandbox Code Playgroud)

    它是什么?用哪种语言写的?

    UPD:用TL(Type Language)编写: https: //core.telegram.org/mtproto/TL

  3. 我已经探索了几个客户端的源代码(Webogram,Telegram-cli(tg),tdesktop),我发现了几个https://core.telegram.org/mtproto的实现.

不幸的是,他们都没有支持多方授权,经过一些研究,我不知道在哪里深入挖掘以找到更多信息.

此外,这些实现看起来很庞大和复杂(例如,https://github.com/vysheng/tg): 在此输入图像描述

在那里,我看到一堆服务器(./tg/tgl/tgl.h):

#define TG_SERVER_1 "149.154.175.50"
#define TG_SERVER_2 "149.154.167.51"
#define TG_SERVER_3 "149.154.175.100"
#define TG_SERVER_4 "149.154.167.91"
#define TG_SERVER_5 "149.154.171.5"
Run Code Online (Sandbox Code Playgroud)

我找到了几个可能合适的函数(./tg/tgl/queries.c):

void empty_auth_file (void) {
  if (TLS->test_mode) {
    bl_do_dc_option (TLS, 1, "", 0, TG_SERVER_TEST_1, strlen (TG_SERVER_TEST_1), 443);
    bl_do_dc_option (TLS, 2, "", 0, TG_SERVER_TEST_2, strlen (TG_SERVER_TEST_2), 443);
    bl_do_dc_option (TLS, 3, "", …
Run Code Online (Sandbox Code Playgroud)

php api algorithm rest telegram

30
推荐指数
2
解决办法
3万
查看次数

如何在Yii2中管理资产?

例如,我创建了一个新页面,我想使用例如backbone.js,自定义css文件和一些图像集合.我应该在哪里宣布Yii2中的所有这些东西?我找到了AppAsset.php模块,但这只适用于css/js文件,当我在那里声明我的css/js文件和路径时,我没有注意到任何变化:

class AppAsset extends AssetBundle {
    public $basePath = '@webroot';
    public $baseUrl = '@web';
    public $css = [
        'css/site.css',
        'js/jquery.mobile-1.4.2.min.css',
    ];
    public $js = [
        'js/jsquery-2.1.0.min.js',
        'js/jquery.mobile-1.4.2.min.js',
        'js/script.js',
    ];

    public $depends = [
        'yii\web\YiiAsset',
        'yii\bootstrap\BootstrapAsset',
    ];
}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

php assets yii2

22
推荐指数
1
解决办法
3万
查看次数

如何在Yii 2.0框架中向ActiveForm添加类?

我想在表单中添加一个类,如:

<form role="form" action="/login" method="POST" class="userform">
Run Code Online (Sandbox Code Playgroud)

我应该如何为Yii 2.0 ActiveForm类重写这个?

同样的问题是在form标签内部的这个结构:

<div class="ui-grid-solo">
     <div class="ui-grid-a">
          <label for="name">Full Name</label>
          <input type="text" name="login" id="login" value="" data-clear-btn="true" data-mini="true">
          <label for="password">Password</label>
          <input type="password" name="password" id="password" value="" data-clear-btn="true" autocomplete="off" data-mini="true">
          <input type="checkbox" name="remind" id="remind" value="1">
          <label for="remind">Remember me</label>
          <br>
          <input type="submit" value="Login" onclick="this.form.submit();">
     </div>
</div>
Run Code Online (Sandbox Code Playgroud)

css php yii2 yii-widgets

19
推荐指数
2
解决办法
5万
查看次数

基于PHP的网站上基于电报的聊天:HOWTO?

我无法弄清楚我的网站和电报服务之间的交互究竟用于什么(首先 - 如何使用PHP和其他用户之间的聊天来完成身份验证过程).

在这个页面上:https://core.telegram.org/api我还不知道如何在PHP中使用这些函数.

根据这个页面:https://telegram.org/apps 我有两个选择:

1)CLI界面(非官方的,顺便说一下):https://github.com/vysheng/tg ,它没有其他的识别功能.为了验证自己,您需要运行:

bin/telegram-cli -k tg-server.pub 
Run Code Online (Sandbox Code Playgroud)

在应用程序内部,您必须输入手机和SMS发送的密码 - 之后您将获得授权.然后安装https://github.com/zyberspace/php-telegram-cli-client并运行telegram-cli作为守护进程:

./bin/telegram-cli -dWS /tmp/tg.sck -k tg-server.pub &  
Run Code Online (Sandbox Code Playgroud)

这是否意味着我必须为每个尝试登录的用户使用PHP手动创建tg-server.pub?

2)网页:https://github.com/zhukov/webogram - 但它是用JavaScript编写的,代码非常复杂.

亲爱的Stackoverflow大师,也许你比我更专心,可以帮助我识别基于Telegram和PHP的用户聊天的正确解决方案(或者例子,我不知道,PHP代码段或其他什么)?

我将不胜感激!

谢谢!

php api web-services chat telegram

5
推荐指数
1
解决办法
4432
查看次数

如何模拟在__init__中实例化的类属性?

我正在尝试模拟VKAuth类中的“ self.api.friends.get”方法:

import vk

class VKAuth(object):
    def __init__(self, access_token, user):
        self.session = vk.Session(access_token = access_token)
        self.api = vk.API(self.session)

    def follow(self):
        vk_friends = self.api.friends.get()
Run Code Online (Sandbox Code Playgroud)

来自测试模块test_views.py:

from mock import patch
from ..auth_backends.vk_backend import VKAuth

class AddUsersToList(TestCase):
    def test_auth_vk(self, mock_get):
         ... etc ...
        auth_token = 'ceeecdfe0eb4bf68ceeecdfe0eb4bf68ceeecdfe0eb4bf68652530774ced6cbc8cba0'
        token = user.auth_token.key
        self.client.defaults['HTTP_AUTHORIZATION'] = 'Token {}'.format(token)
        with patch.object(accounts.auth_backends.vk_backend.VKAuth, 'api'): #point where we're mocking
            response = self.client.post(reverse('auth-social', kwargs=dict(backend='vk')), dict(access_token=auth_token), follow=True)
Run Code Online (Sandbox Code Playgroud)

在基于SNView基于类的视图中对“ auth-social”的上述调用期间创建了VKAuth类的实例:

class SNView(generics.GenericAPIView):
    serializer_class = serializers.AuthSocialSerializer
    permission_classes = (rest_permissions.IsAuthenticated)

    def post(self, request, backend, *args, **kwargs):
        s …
Run Code Online (Sandbox Code Playgroud)

python django unit-testing mocking python-mock

1
推荐指数
1
解决办法
3620
查看次数