Интеграция внешних приложений с использованием OAuth MQL5 Community
Содержание:
- Введение
- Общие сведения об OAuth-механизме сообщества MQL5
- Реализация
- Тестирование
- Заключение
- Вложения
Введение
Каждого зарегистрированного пользователя сообщества MQL5 ждут многочисленные преимущества. Эта платформа стала местом притяжения алгоритмических трейдеров как начинающего, так и профессионального уровня и доступна миллионам трейдеров по всему миру. Недавно я обнаружил потрясающую функцию, доступную всем зарегистрированным пользователям: раздел "Приложения" в MQL5 позволяет настроить OAuth (протокол делегированной авторизации) для ваших внешних приложений. Преодолев все сложности, связанные с интеграцией этих компонентов, я решил подготовить эту статью в качестве упрощенного руководства. Помимо технической реализации, вы откроете для себя возможность, которую, возможно, раньше не замечали, и получите ценные сведения об интеграции Android-приложений с MQL5.

Рис. 1. Схема взаимосвязей между владельцем внешнего приложения и пользователями MQL5
Почему стоит выбрать авторизацию через MQL5?
Точный доступ к вашей целевой аудитории
Основная целевая аудитория для вас как разработчика MQL5 — это само сообщество MQL5. Используя OAuth-механизм сообщества MQL5, вы обращаетесь к платформе, специально созданной для трейдеров, разработчиков и финансовых аналитиков. Такой сфокусированный подход устраняет информационный шум, характерный для обычных социальных платформ.
Ориентация на трейдеров вместо работы с универсальными социальными платформами
В отличие от аутентификации через Google или Facebook, которые предоставляют общие данные о пользователе, OAuth-механизм MQL5 дает специализированную информацию о торговом опыте пользователя. Вы получаете доступ к следующим данным:
- ранг MQL5 (новичок, продвинутый, профессионал, разработчик советников);
- очки репутации, полученные за вклад в сообщество;
- опубликованные продукты в Маркете MQL5;
- торговый опыт и специализация;
- активность на форуме и положение в сообществе.
Эти специализированные данные позволяют создавать глубоко персонализированный пользовательский опыт, с которым не могут сравниться универсальные платформы.
Мгновенная оценка репутации
Когда пользователь проходит аутентификацию с помощью своей учетной записи MQL5, вы сразу получаете представление о его авторитетности в торговом сообществе. Пользователь с большим количеством очков репутации и несколькими опубликованными продуктами — это серьезный и вовлеченный участник сообщества, что является ценной информацией для приложений, где важны доверие и профессионализм.
Формирование релевантной аудитории
Внедряя OAuth-механизм MQL5, вы естественным образом фильтруете базу пользователей, оставляя только тех, кто интересуется трейдингом и финансовыми технологиями. Это обеспечивает:
- более качественное взаимодействие с пользователями;
- более релевантные отзывы о вашем приложении;
- повышение потенциала монетизации;
- снижение затрат на поддержку (пользователи уже знакомы с техническими понятиями).
Эти специализированные данные позволяют создавать глубоко персонализированный пользовательский опыт, с которым не могут сравниться универсальные платформы.
Мгновенная оценка репутации
Когда пользователь проходит аутентификацию с помощью своей учетной записи MQL5, вы сразу получаете представление о его авторитетности в торговом сообществе. Пользователь с большим количеством очков репутации и несколькими опубликованными продуктами — это серьезный и вовлеченный участник сообщества, что является ценной информацией для приложений, где важны доверие и профессионализм.
Формирование релевантной аудитории
Внедряя OAuth-механизм MQL5, вы естественным образом фильтруете базу пользователей, оставляя только тех, кто интересуется трейдингом и финансовыми технологиями. Это обеспечивает:- более качественное взаимодействие с пользователями;
- более релевантные отзывы о вашем приложении;
- повышение потенциала монетизации;
- снижение затрат на поддержку (пользователи уже знакомы с техническими понятиями).
Ограничения
Несмотря на широкие возможности, OAuth-механизм MQL5 имеет ряд ограничений:
- узкая аудитория — пройти аутентификацию могут только пользователи с учетными записями MQL5;
- ограниченный набор областей доступа — по сравнению с крупными платформами доступные области доступа к данным более ограничены;
- ориентация на сообщество — лучше всего подходит для приложений, создаваемых для экосистемы трейдинга и финтеха;
- особенности для мобильных платформ — требуется уделять тщательное внимание деталям при реализации в приложениях для Android/iOS;
- пробелы в документации — некоторые детали реализации могут потребовать проверки на практике.
Общие сведения об OAuth-механизме сообщества MQL5
Как это работает — технический процесс
MQL5 реализует фреймворк авторизации OAuth 2.0 с помощью следующих ключевых эндпоинтов:- эндпоинт авторизации — https://www.mql5.com/en/oauth/login
- эндпоинт токена — https://www.mql5.com/api/oauth/access_token
- пользовательский эндпоинт — https://www.mql5.com/api/oauth/user_info
Этот процесс соответствует стандартному шаблону процесса для кода авторизации OAuth 2.0:
- пользователь нажимает кнопку "Войти через MQL5" в вашем приложении;
- выполняется перенаправление на страницу авторизации MQL5;
- пользователь проходит аутентификацию и предоставляет права доступа;
- выполняется перенаправление обратно в ваше приложение с кодом авторизации;
- код обменивается на токен доступа;
- токен доступа используется для получения данных профиля пользователя.
Основные компоненты для разработчиков
- Идентификатор клиента (Client ID) — уникальный идентификатор вашего приложения.
- Секретный ключ клиента (Client Secret) — конфиденциальный ключ для обмена кода на токен доступа (его необходимо защитить).
- URI перенаправления — куда пользователи возвращаются после авторизации.
- Области доступа (Scopes) — определяют, к каким данным пользователя может получить доступ ваше приложение.
Рекомендации по безопасности
- Всегда используйте HTTPS для всех эндпоинтов.
- Храните секретные ключи клиента в защищенном виде (никогда не размещайте их в клиентском коде).
- Реализуйте защиту от CSRF-атак с помощью параметров состояния.
- Проверяйте все URI перенаправления.
- Реализуйте корректные механизмы хранения и обновления токенов.
Реализация
Шаг 1 — зарегистрируйте свое приложение
1. Перейдите в профиль своей учетной записи MQL5 → Сообщество → Приложения:

Рис. 2. Открытие раздела "Приложения" в профиле MQL5
2. Нажмите "Добавить приложение".
3. Укажите:
- название — понятное название вашего приложения, описывающее его назначение;
- URL главной страницы — веб-сайт вашего приложения;
- URI перенаправления — ваш callback-эндпоинт для OAuth.
4. Нажмите "Сохранить", чтобы получить Client ID и Client Secret.
Прежде чем перейти к коду, важно понять, какие именно части Android-проекта действительно важны для интеграции OAuth-механизма сообщества MQL5.
Некоторые читатели откроют прилагаемый проект непосредственно в Android Studio, а другие — уже хорошо знакомые с Kotlin и Android — возможно, предпочтут начать с нового проекта Empty Activity и адаптировать реализацию, сравнивая ее с прилагаемым кодом. Оба подхода работают.
Цель данного материала — не научить разработке приложений для Android, а наглядно показать, как Android-приложение может участвовать в процессе аутентификации сообщества MQL5 и успешно инициировать вход через OAuth.
Тем, кто только начинает заниматься разработкой под Android: не переживайте, что нужно освоить каждый аспект. У Android Studio есть отличная документация, а в интернете доступно огромное количество бесплатных ресурсов. Настоящая ценность здесь заключается в понимании схемы аутентификации — того, как работает OAuth-механизм MQL5 и чем он отличается от обычных систем входа через социальные сети. Концепции, с которыми вы познакомитесь, применимы к любой интеграции OAuth, но имеют уникальное преимущество — доступ к специализированным данным трейдеров.
Чтобы приведенный ниже разбор реализации кода было легко понять, ядро проекта составляют следующие файлы. Именно на этих файлах вам следует сосредоточить внимание при запуске проекта и чтении следующих пояснений.
| Исходный файл | Местоположение в проекте | Описание |
|---|---|---|
| MainActivity.kt | app/src/main/java/ / | Основная точка входа в приложение; запускает приложение и применяет тему. |
| OAuthConfig.kt | app/src/main/java/ /util/ | Содержит эндпоинты OAuth MQL5, URL перенаправления и Client ID для входа в сообщество MQL5. |
| LoginActivity.kt | app/src/main/java/ /ui/login/ | Управляет процессом входа: открывает страницу входа MQL5, обрабатывает перенаправления и получает код авторизации. |
| activity_login.xml | app/src/main/res/layout/ | Определяет макет экрана входа с кнопкой "Войти с помощью MQL5" для запуска процесса OAuth. |
| AndroidManifest.xml | app/src/main/ | Важный файл конфигурации; объявляет право доступа к интернету и схему URI перенаправления OAuth (mql5profile://oauth). |
| Theme.kt | app/src/main/java/ /ui/theme/ | Определяет настройки темы для всего приложения, обеспечивая единообразное визуальное оформление. |
| styles.xml | app/src/main/res/values/ | Содержит определения тем и стилей, обеспечивающие единообразный внешний вид на всех экранах. |
1. Централизованная конфигурация OAuth (OAuthConfig.kt)
Представьте этот конфигурационный файл как свод правил, определяющих, как ваше приложение взаимодействует с OAuth-механизмом MQL5. Именно здесь вы задаете все эндпоинты и идентификаторы в одном организованном месте.
Эта структура важна, поскольку профессиональные провайдеры OAuth (Google, GitHub и т. д.) используют тот же подход. Организуя нашу конфигурацию таким образом, мы рассматриваем OAuth-механизм сообщества MQL5 как полноценную систему аутентификации — которой он и является для торговых приложений.
Обратите внимание: эти эндпоинты специально разработаны для экосистемы MQL5 – в отличие от входа через социальные сети, который предоставляет универсальные данные. USER_URL вернет не только основную информацию профиля, но и торговую репутацию, ранг и профессиональный статус — данные, которые на вес золота для финтех-приложений.
Код на Kotlin:
package com.clemencebenjamin.mql5profileviewer.util object OAuthConfig { const val CLIENT_ID = "YOUR_MQL5_CLIENT_ID" const val REDIRECT_URI = "https://your-domain.com/callback.php" const val AUTH_URL = "https://www.mql5.com/en/oauth/login" const val TOKEN_URL = "https://www.mql5.com/api/oauth/access_token" const val USER_URL = "https://www.mql5.com/api/oauth/user_info" }
2. Макет экрана входа (activity_login.xml)
OAuth работает наиболее эффективно, когда точка входа продумана и не создает лишних препятствий. Этот лаконичный дизайн сразу показывает пользователю MQL5, что приложение рассчитано именно на его профессиональную среду.
Когда трейдер видит надпись "Войти с помощью MQL5" вместо обычных кнопок социальных сетей, он понимает, что это приложение ориентировано на его сферу деятельности. Это как показать пилоту кабину самолета вместо приборной панели автомобиля — мгновенное узнавание и доверие.
Отсутствие необходимости создавать локальную учетную запись означает вход без дополнительных барьеров для пользователей MQL5. Они уже опираются на свой профиль MQL5; зачем заставлять их создавать еще один?
Код XML:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical" android:padding="24dp"> <ImageView android:layout_width="120dp" android:layout_height="120dp" android:src="@mipmap/ic_launcher"/> <Button android:id="@+id/btnLogin" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Sign in with MQL5" android:layout_marginTop="24dp"/> </LinearLayout>
3. Android Manifest (AndroidManifest.xml)
Манифест — это схема конфигурации Android. Здесь мы сообщаем Android две важнейшие вещи: "этому приложению требуется доступ к интернету" и "вот как обрабатывать OAuth callback".
XML-код:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"> <uses-permission android:name="android.permission.INTERNET"/> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/Theme.MQL5ProfileViewer"> <activity android:name=".ui.login.LoginActivity" android:exported="true" android:launchMode="singleTop"> <!-- App Launcher --> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> <!-- OAuth Redirect --> <intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE"/> <data android:scheme="mql5profile" android:host="oauth"/> </intent-filter> </activity> </application> </manifest>
Этот intent-filter с mql5profile://oauth — особый механизм взаимодействия нашего приложения с OAuth-механизмом MQL5. После аутентификации пользователя на MQL5.com он перенаправляется обратно на этот конкретный адрес, а Android знает, что нужно активировать приложение и передать ему код авторизации.
Эта модель отражает подход профессиональных финтех-приложений к аутентификации: безопасный, контролируемый и удобный для пользователя.
4. Контроллер процесса OAuth (LoginActivity.kt)
Именно в этой активности и происходит самое важное. Она координирует весь процесс взаимодействия по протоколу OAuth между вашим приложением и серверами MQL5.
Код на Kotlin:
package com.clemencebenjamin.mql5profileviewer.ui.login import android.content.Intent import android.os.Bundle import android.widget.Button import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import androidx.browser.customtabs.CustomTabsIntent import androidx.core.net.toUri import com.clemencebenjamin.mql5profileviewer.R import com.clemencebenjamin.mql5profileviewer.util.OAuthConfig class LoginActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_login) findViewById<Button>(R.id.btnLogin).setOnClickListener { startOAuth() } } private fun startOAuth() { val uri = OAuthConfig.AUTH_URL.toUri().buildUpon() .appendQueryParameter("client_id", OAuthConfig.CLIENT_ID) .appendQueryParameter("redirect_uri", OAuthConfig.REDIRECT_URI) .appendQueryParameter("response_type", "code") .build() CustomTabsIntent.Builder() .build() .launchUrl(this, uri) } override fun onNewIntent(intent: Intent?) { super.onNewIntent(intent) val code = intent?.data?.getQueryParameter("code") if (code != null) { Toast.makeText(this, "MQL5 authentication successful", Toast.LENGTH_SHORT).show() // Next step: exchange code for access token on backend } } }
Как устроен процесс:
- пользователь нажимает кнопку → приложение формирует URL авторизации MQL5 с вашим CLIENT_ID;
- открываются Custom Tabs → пользователь видит привычную страницу входа в MQL5 (это вызывает доверие);
- пользователь проходит аутентификацию → MQL5 спрашивает: "Разрешить этому приложению доступ к вашему профилю?";
- обратное перенаправление → MQL5 отправляет код авторизации на ваш REDIRECT_URI;
- приложение получает код → метод onNewIntent перехватывает его.
На данный момент наше приложение успешно выполнило следующие действия:
- открыло страницу входа в MQL5;
- приняло реальные учетные данные MQL5;
- обработало согласие пользователя;
- получило действительный код авторизации OAuth.
Это не просто техническая реализация: приложение использует уже сложившееся доверие к экосистеме MQL5. Мы опираемся на уже сформированное доверие к MQL5, чтобы мгновенно подключать пользователей.
5. Совместимость темы()
Процессы аутентификации чувствительны к сбоям пользовательского интерфейса. Стабильная тема обеспечивает бесшовный OAuth-процесс, даже когда Android управляет несколькими активностями и интентами.
Код XML:
<?xml version="1.0" encoding="utf-8"?> <resources> <style name="Theme.MQL5ProfileViewer" parent="Theme.AppCompat.DayNight.NoActionBar"/> </resources>
Когда пользователи проходят аутентификацию, они находятся в уязвимом положении: вводят учетные данные и предоставляют права доступа. Мерцание, сбой или визуальный дефект могут подорвать доверие. Эта тема обеспечивает визуальную стабильность, которой требует профессиональная аутентификация.
Если заменить это на OAuth Google или Facebook, мы получим типовые данные. С MQL5 мы получаем трейдерскую идентичность: имя, репутацию и изображение профиля. Это превращает наше приложение из "очередного варианта входа" в "профессиональный инструмент для трейдеров".
Серверный компонент — завершение процесса OAuth MQL5
Хотя Android-приложение успешно инициирует аутентификацию и получает согласие пользователя, на стороне клиента процесс OAuth не завершается. Для безопасного завершения процесса требуется серверный компонент.
В этом разделе объясняется, зачем нужен сервер, как он вписывается в нашу систему и как простой PHP callback-скрипт обеспечивает полный процесс для OAuth сообщества MQL5.
Почему требуется сервер
Аутентификация через OAuth намеренно разделена на два этапа:
1. Авторизация (клиентская часть)
Android-приложение перенаправляет пользователя в систему MQL5, где он входит в аккаунт и предоставляет права доступа.
2. Обмен кода на токен (серверная часть)
Код авторизации, возвращенный MQL5, необходимо обменять на токен доступа, используя:
- Client Secret (секретный ключ клиента);
- защищенный POST-запрос.
Почему это нельзя сделать напрямую в Android:
- Client Secret ни в коем случае нельзя встраивать в мобильные приложения;
- приложения для Android легко декомпилировать;
- провайдеры OAuth (в том числе MQL5) устроены так, что доверяют межсерверному взаимодействию.
Поэтому сервер выступает доверенным посредником между:
- приложением для Android;
- инфраструктурой OAuth MQL5.
Как сервер вписывается в нашу архитектуру
Теперь полный процесс выглядит так:
- приложение для Android перенаправляет пользователя на страницу входа MQL5;
- пользователь входит в систему и предоставляет права доступа;
- MQL5 перенаправляет на URL нашего PHP callback-скрипта;
- PHP-сервер обменивает код авторизации на токен доступа;
- PHP-сервер перенаправляет пользователя обратно в Android с помощью диплинков;
- приложение для Android возобновляет работу в аутентифицированном контексте.
Эта архитектура отражает подход к реализации профессиональных интеграций OAuth-авторизации в промышленных системах.
Бесплатные варианты PHP-хостинга для прототипов OAuth
Чтобы продемонстрировать концепцию, мы рассмотрели бесплатные сервисы PHP-хостинга, подходящие для обучения и создания прототипов.
Распространенные бесплатные варианты:
- InfinityFree;
- ByetHost;
- AwardSpace;
- Atwebpages (используется для демонстрации);
- Localhost + Ngrok (для тестирования).
Важное примечание:
Некоторые провайдеры бесплатного хостинга ограничивают исходящие POST-запросы, что может заблокировать обмен кода на токен доступа. Это не означает, что реализация неверна, — это лишь указывает на ограничения хостинга.
Несмотря на это, бесплатные хостинги по-прежнему полезны для:
- подтверждения возможности реализации OAuth;
- проверки процесса перенаправления и получения согласия;
- демонстрации потенциала интеграции с сообществом MQL5.
PHP callback-скрипт OAuth (серверная логика)
Приведенный ниже PHP-скрипт представляет собой серверный обработчик OAuth.
Он намеренно сделан минимальным и ориентирован на одну задачу: завершение OAuth-процесса.
Примечание по работе с учетными данными
На практике замените заполнители в кавычках значениями, полученными из панели управления вашего приложения в сообществе MQL5. Учетные данные ни в коем случае не следует коммитить в публичные репозитории.
1. Раздел конфигурации
В этом разделе задаются учетные данные OAuth и эндпоинты, необходимые для взаимодействия с MQL5.
Код на PHP:
<?php // =============================== // CONFIGURATION // =============================== $CLIENT_ID = "YOUR_MQL5_CLIENT_ID"; $CLIENT_SECRET = "YOUR_MQL5_CLIENT_SECRET"; $REDIRECT_URI = "https://your-domain.com/callback.php"; $TOKEN_URL = "https://www.mql5.com/api/oauth/access_token";
Назначение:
- позволяет MQL5 идентифицировать ваше приложение;
- обеспечивает безопасный обмен кода на токен доступа;
- позволяет централизованно хранить параметры OAuth.
2. Получение кода авторизации
После того как пользователь выполнит вход и одобрит доступ, MQL5 перенаправляет его обратно в этот скрипт с временным кодом авторизации.
Код на PHP:
// =============================== // STEP 1: GET AUTH CODE // =============================== if (!isset($_GET['code'])) { die("Authorization code not found."); } $code = $_GET['code'];
Что это подтверждает:
- пользователь успешно прошел аутентификацию;
- права доступа были предоставлены;
- процесс OAuth безопасно дошел до сервера.
3. Обмен кода на токен доступа
Это наиболее критически важный этап в OAuth.
Сервер отправляет в MQL5 POST-запрос, содержащий:
- Client ID;
- Client Secret;
- код авторизации;
- URI перенаправления.
// =============================== // STEP 2: EXCHANGE CODE FOR TOKEN // =============================== $postData = [ 'grant_type' => 'authorization_code', 'client_id' => $CLIENT_ID, 'client_secret' => $CLIENT_SECRET, 'code' => $code, 'redirect_uri' => $REDIRECT_URI ]; $ch = curl_init($TOKEN_URL); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postData)); $response = curl_exec($ch); curl_close($ch); $data = json_decode($response, true); if (!isset($data['access_token'])) { die("Token exchange failed: " . htmlspecialchars($response)); } $accessToken = $data['access_token'];
Почему это должно выполняться на сервере:
- в нем используются конфиденциальные учетные данные;
- для этого требуется доверенное межсерверное взаимодействие;
- кроме того, он соответствует принципам безопасности OAuth.
4. Перенаправление обратно в Android
После получения токена сервер перенаправляет пользователя обратно в Android-приложение с помощью диплинков.
Код PHP:
// =============================== // STEP 3: REDIRECT BACK TO ANDROID // =============================== $androidRedirect = "mql5profile://oauth?token=" . urlencode($accessToken); header("Location: $androidRedirect"); exit;
Результат:
- Android-приложение возобновляет выполнение;
- теперь в приложении сохранен контекст авторизованного сеанса;
- данные профиля можно получить на последующих этапах.
Наблюдения и ограничения хостинга
- В ходе реализации мы заметили, что некоторые бесплатные хостинговые сервисы:
- успешно обрабатывают перенаправления и авторизацию;
- принимают входящие запросы от MQL5; и
- блокируют исходящие POST-запросы, препятствуя обмену кода на токен доступа.
Это не является сбоем, а, напротив, демонстрирует силу архитектуры:
после развертывания на совместимом хостинге тот же код завершает цикл OAuth без изменений.
Основной вывод
Серверный компонент в OAuth не является опциональным — это фундаментальное требование безопасности.
Несмотря на ограничения бесплатного хостинга, нам удалось успешно проверить:
- вход через OAuth MQL5;
- предоставление прав доступа;
- передача кода авторизации;
- сквозное проектирование системы.
Это подтверждает, что внешние приложения могут надежно аутентифицировать пользователей с помощью учетных записей в сообществе MQL5, открывая широкие возможности для платформ, ориентированных на трейдинг.
Тестирование
Развертывание приложения включало сборку проекта и его запуск на виртуальном устройстве. Сборка завершилась успешно, приложение работало как положено, а результаты представлены ниже на прилагаемых скриншотах.

Рис. 3. Тестирование входа через сообщество MQL5.
На следующих трех изображениях представлены статичные скриншоты, иллюстрирующие последовательность действий в приложении. На первом изображении показана главная страница приложения. Второе изображение появляется после нажатия кнопки "Войти через MQL5"; на нем отображается страница аутентификации MQL5. Наконец, после ввода корректного имени пользователя и пароля приложение получает и отображает настоящее имя зарегистрированного пользователя — в данном случае мое собственное.
Нажатие кнопки "Продолжить" обычно запускает на бэкенде процесс обмена кода на токен доступа на сервере, где размещен PHP callback. Однако в рамках этой демонстрации мы не пошли дальше, поскольку предложенная серверная среда не полностью соответствовала требованиям MQL5 к HTTPS. В результате процесс аутентификации вернул ответ, который описан сразу под этими изображениями.

Рис. 4. Стартовая страница приложения

Рис. 5. Страница входа после выбора "Войти с помощью MQL5"

Рис. 6. Выберите "Продолжить как [ваше имя пользователя]", чтобы перейти на страницу авторизации после ввода корректных учетных данных MQL5
Вот что получилось после нажатия кнопки "Продолжить":
Token exchange failed:
405 Method Not Allowed Эта ошибка возникла после успешного входа в систему, на этапе бэкенда, когда PHP-сервер пытается обменять код авторизации на токен доступа через эндпоинт токена MQL5.
Что означает эта ошибка:
Ответ с кодом ошибки 405 означает, что сервер получил запрос, но отклонил его, поскольку использованный HTTP-метод не разрешен для данного эндпоинта. В данном случае эндпоинт токена отклонил запрос до того, как токен мог быть выдан.
Как правило, это происходит по одной или нескольким из следующих причин:
1. Неверный метод запроса
- Эндпоинт токена MQL5 строго требует POST-запрос.
- Если хостинг-среда блокирует или перезаписывает POST-запросы, обмен кода на токен доступа завершится сбоем.
2. Ограничения хостинга
- Некоторые провайдеры бесплатного хостинга ограничивают исходящие HTTPS POST-запросы или использование cURL.
- Другие провайдеры из соображений безопасности проксируют или блокируют запросы к внешним API.
3. Проблемы с соответствием требованиям HTTPS
- Для OAuth в MQL5 требуется действительный HTTPS-callback.
- Если сертификат отсутствует, является слабым или недоверенным, запрос может быть отклонен на вышестоящем уровне.
Заключение
В рамках этого проекта мы успешно продемонстрировали, как OAuth сообщества MQL5 можно интегрировать с внешними приложениями. Эти приложения могут быть веб- или мобильными — в нашем случае мы использовали Android исключительно в демонстрационных целях. Прилагается чистый и функциональный исходный проект, который вы можете свободно изучать, расширять и развертывать.
Для запуска проекта вам потребуется Android Studio, установленная на вашем компьютере, и активная учетная запись в сообществе MQL5. На панели управления вашего профиля MQL5 перейдите в раздел Apps (расположен на левой панели) и создайте новое приложение. Вам необходимо будет указать:
- название приложения;
- URL главной страницы, который должен указывать на место размещения вашего PHP callback-скрипта.
Вы, возможно, заметите, что в этой статье не рассматриваются подробности разработки именно для Android. Это сделано намеренно. Основная цель здесь — укрепить уверенность в этой концепции и продемонстрировать, что сторонние приложения могут надежно использовать OAuth-механизм сообщества MQL5. Для более глубокого изучения Android в интернете доступно множество документации и обучающих материалов.
Прилагаемый проект работает корректно и готов к запуску, однако вам необходимо будет настроить его под свои нужды. Сюда входят:
- замена Client ID на тот, который сгенерирован для вашего собственного приложения MQL5;
- настройка URL сервера, на котором размещен ваш PHP callback-скрипт для OAuth;
- проверка того, что из соображений безопасности в Android-приложении используется только Client ID (и никогда — Client Secret).
После настройки соберите и запустите приложение, чтобы протестировать полный процесс OAuth.
Что касается бэкенд-серверов, вам необходимо выбрать хостинг-решение без функциональных ограничений, которое полностью поддерживает HTTPS, исходящие POST-запросы и рабочие процессы OAuth. Для приложений промышленного уровня настоятельно рекомендуется вложиться в безопасный и надежный бэкенд.
Надеюсь, что эта краткая основа станет прочной отправной точкой для создания приложений, ориентированных на трейдеров и бесшовно интегрирующихся с сообществом MQL5. Подобные интеграции открывают возможности для расширения экосистемы и укрепления сети разработчиков, занимающихся инструментами алгоритмической торговли.
Ниже приведена таблица вложений — внимательно ознакомьтесь с файлами и изучите их в удобном для вас темпе.
Если у вас есть вопросы или предложения, не стесняйтесь создать обсуждение в разделе комментариев под статьей, где сообщество разработчиков всегда готово прийти на помощь.
До следующей публикации — берегите себя и продолжайте творить.
Вложения
В приложенных файлах содержатся исходный код PHP callback-скрипта и ZIP-архив MQL5 Profile Viewer. Распакуйте ZIP-файл, чтобы получить доступ к полному Android-проекту, изучите входящие в него файлы и просмотрите приведенную ниже таблицу с кратким описанием каждого компонента.| Имя файла | Описание |
|---|---|
| callback.php | Серверный OAuth callback-скрипт, отвечающий за получение кода авторизации от сообщества MQL5, безопасный обмен этого кода на токен доступа и перенаправление результата аутентификации обратно в Android-приложение. Этот файл должен быть размещен на сервере с поддержкой HTTPS. |
| MQL5ProfileViewer.zip | Полный исходный код проекта Android Studio, демонстрирующий интеграцию с OAuth-механизмом сообщества MQL5. Проект включает процесс входа, обработку диплинков и логику аутентификации пользователя. Перед сборкой и запуском приложения необходимо указать собственные значения Client ID и URL callback бэкенда. |
Перевод с английского произведен MetaQuotes Ltd.
Оригинальная статья: https://www.mql5.com/en/articles/20852
Предупреждение: все права на данные материалы принадлежат MetaQuotes Ltd. Полная или частичная перепечатка запрещена.
Данная статья написана пользователем сайта и отражает его личную точку зрения. Компания MetaQuotes Ltd не несет ответственности за достоверность представленной информации, а также за возможные последствия использования описанных решений, стратегий или рекомендаций.
Мастер-класс по созданию пользовательских индикаторов (Часть 2): Разработка практического советника Supertrend на MQL5
Использование Экономического календаря MQL5 для фильтрации новостей (Часть 1): Реализация временных окон до и после новостей в MQL5
Создание и использование Скиллов для создания артефактов MQL. Часть 2
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования