Как можно получить номер кошелька пользователя в Telegram?

Доброго времени суток! Поделитесь, пожалуйста, примерами получения телеграм-кошелька пользователя с помощью мини-приложений Telegram. Я следовал документации TonConnect, но столкнулся с ошибкой, связанной с манифестом:

```
TypeError: Failed to construct 'URL': Invalid URL 
at t.isTelegramUrl (url.ts:18:17) 
at p.generateUniversalLink (bridge-provider.ts:471:13) 
at p.connect (bridge-provider.ts:133:21) 
at S.connect (ton-connect.ts:265:30) 
at getTelegramWallet (index.js:18:46) 
at HTMLDivElement.<anonymous> (index.js:38:37)
```

Вот код, который я использую:

```javascript
const tonConnect = new TonConnectSDK.TonConnect({
    manifestUrl: 'https://d467-31-134-107-229.ngrok-free.app/static/tonconnect-manifest.json'
});

async function getTelegramWallet() {
    try {
        const session = await tonConnect.connect({
            universalLink: true, 
            qrCode: true, 
        });

        const walletInfo = tonConnect.wallet;
        if (walletInfo && walletInfo.address) {
            console.log("Кошелек подключен:", walletInfo.address);
            return walletInfo.address;
        } else {
            console.error("Кошелек не подключен");
            return null;
        }
    } catch (error) {
        console.error("Ошибка подключения кошелька:", error);
        return null;
    }
}
```

Несмотря на то, что манифест по указанному адресу доступен и выглядит настроенным корректно, возникают описанные проблемы. Все ссылки на приложение и иконку также валидны. 

Как можно решить эту проблему?
  • 7 декабря 2024 г. 22:03
Ответы на вопрос 1
Ошибка, которую вы получили, указывает на то, что у вашего приложения возникает проблема с созданием правильной URL для манифеста или при работе с ссылками в вашем приложении. Вот несколько шагов для устранения этой проблемы:

1. **Проверьте URL манифеста**:
   Убедитесь, что URL, который вы используете, соответствует формату, требуемому Telegram для манифестов. Он должен быть полным и действительным. Попробуйте открыть URL в браузере, чтобы убедиться, что он доступен и возвращает ожидаемый JSON.

2. **Формат манифеста**:
   Убедитесь, что ваш `tonconnect-manifest.json` соответствует необходимому формату. Он должен содержать необходимые поля, такие как `name`, `short_description`, `url`, `icon`, и другие. Примерный формат может выглядеть так:

   ```json
   {
       "name": "My App",
       "short_description": "Connect to your wallet",
       "url": "https://yourdomain.com",
       "icon": "https://yourdomain.com/icon.png",
       "start_url": "https://yourdomain.com/start",
       "scope": "https://yourdomain.com/",
       "theme_color": "#FFFFFF",
       "background_color": "#FFFFFF",
       "display": "standalone"
   }
   ```

3. **HTTPS и корректный домен**:
   Убедитесь, что вы используете HTTPS, так как Telegram требует защищенные соединения для манифестов. Также проверьте, что ваш домен корректен и не используется для чего-то другого.

4. **Тестирование в реальном окружении**:
   Иногда инструменты типа ngrok могут не всегда работать так, как ожидалось, особенно с динамическими URL. Попробуйте развернуть свой манифест на стабильном хостинге вместо временного.

5. **Логи и отладка**:
   Проверьте консоль разработчика для более детальной информации о том, где и как возникает ошибка. Это может дать больше подсказок о ее причине.

6. **Обновление SDK и документации**:
   Проверьте, используете ли вы последнюю версию TonConnect SDK, и ознакомьтесь с документацией. Возможно, в последних версиях были сделаны изменения, которые могут повлиять на ваше приложение.

Если после выполнения этих шагов проблема сохраняется, возможно, вы сможете получить дополнительную помощь на форумах или в сообществе разработчиков Telegram.
Похожие вопросы