java无法注册到textsecure服务器,无法正常工作
我正在尝试将Signal chat集成到我的安卓应用程序中。我已成功设置服务器端(即推送服务器和文本安全服务器),这意味着服务器日志(后端)中没有错误。但安卓应用程序在注册步骤失败,但我能够成功接收和验证短信,生成密钥步骤也工作正常
在成功验证和密钥生成后,我在屏幕上看到“连接错误:无法连接到服务器”
下面是我在Android应用程序日志上看到的例外
org.thoughtcrime.securesms E/Surface: getSlotFromBufferLocked: unknown buffer: 0xb9f3e948
org.thoughtcrime.securesms W/TextSecurePreferences: Setting push registered: false
org.thoughtcrime.securesms W/PushServiceSocket: Push service URL: http://<my_server_ip>:8080
org.thoughtcrime.securesms W/PushServiceSocket: Opening URL: http://<my_server_ip>:8080/v1/accounts/sms/code/+918130927259
org.thoughtcrime.securesms W/SMSListener: Got SMS broadcast...
org.thoughtcrime.securesms W/SmsListener: Got challenge!
org.thoughtcrime.securesms W/RegistrationService: Got a challenge broadcast...
org.thoughtcrime.securesms W/PushServiceSocket: Push service URL: http://<my_server_ip>:8080
org.thoughtcrime.securesms W/PushServiceSocket: Opening URL: http://<my_server_ip>:8080/v1/accounts/code/392553
org.thoughtcrime.securesms W/PushServiceSocket: Push service URL: http://<my_server_ip>:8080
org.thoughtcrime.securesms W/PushServiceSocket: Opening URL: http://<my_server_ip>:8080/v2/keys/
org.thoughtcrime.securesms W/PushServiceSocket: Push service URL: http://<my_server_ip>:8080
org.thoughtcrime.securesms W/PushServiceSocket: Opening URL: http://<my_server_ip>:8080/v1/accounts/gcm/
org.thoughtcrime.securesms W/PhoneNumberFormatter: Got local CC: IN
org.thoughtcrime.securesms W/PhoneNumberFormatter: Error type: TOO_LONG. The string supplied is too long to be a phone number.
org.thoughtcrime.securesms W/PhoneNumberFormatter: at com.google.i18n.phonenumbers.PhoneNumberUtil.parseHelper(PhoneNumberUtil.java:2895)
org.thoughtcrime.securesms W/PhoneNumberFormatter: at com.google.i18n.phonenumbers.PhoneNumberUtil.parse(PhoneNumberUtil.java:2687)
org.thoughtcrime.securesms W/PhoneNumberFormatter: at com.google.i18n.phonenumbers.PhoneNumberUtil.parse(PhoneNumberUtil.java:2677)
org.thoughtcrime.securesms W/PhoneNumberFormatter: at org.whispersystems.signalservice.api.util.PhoneNumberFormatter.formatNumber(PhoneNumberFormatter.java:99)
org.thoughtcrime.securesms W/PhoneNumberFormatter: at org.thoughtcrime.securesms.database.TextSecureDirectory.getPushEligibleContactNumbers(TextSecureDirectory.java:190)
org.thoughtcrime.securesms W/PhoneNumberFormatter: at org.thoughtcrime.securesms.util.DirectoryHelper.refreshDirectory(DirectoryHelper.java:91)
org.thoughtcrime.securesms W/PhoneNumberFormatter: at org.thoughtcrime.securesms.service.RegistrationService.handleCommonRegistration(RegistrationService.java:254)
org.thoughtcrime.securesms W/PhoneNumberFormatter: at org.thoughtcrime.securesms.service.RegistrationService.handleSmsRegistrationIntent(RegistrationService.java:208)
org.thoughtcrime.securesms W/PhoneNumberFormatter: at org.thoughtcrime.securesms.service.RegistrationService.access$000(RegistrationService.java:63)
org.thoughtcrime.securesms W/PhoneNumberFormatter: at org.thoughtcrime.securesms.service.RegistrationService$1.run(RegistrationService.java:95)
org.thoughtcrime.securesms W/PhoneNumberFormatter: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
org.thoughtcrime.securesms W/PhoneNumberFormatter: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
org.thoughtcrime.securesms W/PhoneNumberFormatter: at java.lang.Thread.run(Thread.java:818)
org.thoughtcrime.securesms W/ContactsSyncAdapter: onPerformSync(com.安卓.contacts)
org.thoughtcrime.securesms W/PhoneNumberFormatter: Got local CC: IN
org.thoughtcrime.securesms W/PhoneNumberFormatter: Got local CC: IN
org.thoughtcrime.securesms W/PhoneNumberFormatter: Got local CC: IN
org.thoughtcrime.securesms W/PhoneNumberFormatter: Error type: TOO_LONG. The string supplied is too long to be a phone number.
org.thoughtcrime.securesms W/PhoneNumberFormatter: at com.google.i18n.phonenumbers.PhoneNumberUtil.parseHelper(PhoneNumberUtil.java:2895)
org.thoughtcrime.securesms W/PhoneNumberFormatter: at com.google.i18n.phonenumbers.PhoneNumberUtil.parse(PhoneNumberUtil.java:2687)
org.thoughtcrime.securesms W/PhoneNumberFormatter: at com.google.i18n.phonenumbers.PhoneNumberUtil.parse(PhoneNumberUtil.java:2677)
org.thoughtcrime.securesms W/PhoneNumberFormatter: at org.whispersystems.signalservice.api.util.PhoneNumberFormatter.formatNumber(PhoneNumberFormatter.java:99)
org.thoughtcrime.securesms W/PhoneNumberFormatter: at org.thoughtcrime.securesms.database.TextSecureDirectory.getPushEligibleContactNumbers(TextSecureDirectory.java:190)
org.thoughtcrime.securesms W/PhoneNumberFormatter: at org.thoughtcrime.securesms.util.DirectoryHelper.refreshDirectory(DirectoryHelper.java:91)
org.thoughtcrime.securesms W/PhoneNumberFormatter: at org.thoughtcrime.securesms.service.RegistrationService.handleCommonRegistration(RegistrationService.java:254)
org.thoughtcrime.securesms W/PhoneNumberFormatter: at org.thoughtcrime.securesms.service.RegistrationService.handleSmsRegistrationIntent(RegistrationService.java:208)
org.thoughtcrime.securesms W/PhoneNumberFormatter: at org.thoughtcrime.securesms.service.RegistrationService.access$000(RegistrationService.java:63)
org.thoughtcrime.securesms W/PhoneNumberFormatter: at org.thoughtcrime.securesms.service.RegistrationService$1.run(RegistrationService.java:95)
org.thoughtcrime.securesms W/PhoneNumberFormatter: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
org.thoughtcrime.securesms W/PhoneNumberFormatter: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
org.thoughtcrime.securesms W/PhoneNumberFormatter: at java.lang.Thread.run(Thread.java:818)
org.thoughtcrime.securesms W/PhoneNumberFormatter: Got local CC: IN
org.thoughtcrime.securesms W/PhoneNumberFormatter: Got local CC: IN
org.thoughtcrime.securesms W/PushServiceSocket: Push service URL: http://<my_server_ip>:8080
org.thoughtcrime.securesms W/PushServiceSocket: Opening URL: http://<my_server_ip>:8080/v1/directory/tokens
org.thoughtcrime.securesms W/Directory: Adding active token: +919999555808, X8WadrTVTDs9lw
org.thoughtcrime.securesms W/Directory: Adding active token: +919555277550, +e9lhGZ8Fzb/jw
org.thoughtcrime.securesms W/PushServiceSocket: Push service URL: http://<my_server_ip>:8080
org.thoughtcrime.securesms W/PushServiceSocket: Opening URL: http://<my_server_ip>:8080/v1/accounts/token
org.thoughtcrime.securesms W/RegistrationService: org.whispersystems.signalservice.api.push.exceptions.NotFoundException: Not found
org.thoughtcrime.securesms W/RegistrationService: at org.whispersystems.signalservice.internal.push.PushServiceSocket.makeRequest(PushServiceSocket.java:510)
org.thoughtcrime.securesms W/RegistrationService: at org.whispersystems.signalservice.internal.push.PushServiceSocket.getAccountVerificationToken(PushServiceSocket.java:146)
org.thoughtcrime.securesms W/RegistrationService: at org.whispersystems.signalservice.api.SignalServiceAccountManager.getAccountVerificationToken(SignalServiceAccountManager.java:259)
org.thoughtcrime.securesms W/RegistrationService: at org.thoughtcrime.securesms.service.RegistrationService.handleCommonRegistration(RegistrationService.java:260)
org.thoughtcrime.securesms W/RegistrationService: at org.thoughtcrime.securesms.service.RegistrationService.handleSmsRegistrationIntent(RegistrationService.java:208)
org.thoughtcrime.securesms W/RegistrationService: at org.thoughtcrime.securesms.service.RegistrationService.access$000(RegistrationService.java:63)
org.thoughtcrime.securesms W/RegistrationService: at org.thoughtcrime.securesms.service.RegistrationService$1.run(RegistrationService.java:95)
org.thoughtcrime.securesms W/RegistrationService: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
org.thoughtcrime.securesms W/RegistrationService: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
org.thoughtcrime.securesms W/RegistrationService: at java.lang.Thread.run(Thread.java:818)
下面是我的推送服务器。yml
redis:
url: redis://localhost:6379/2
authentication:
servers:
-
name: 123
password: 123
gcm:
xmpp: false
apiKey: A####################s
senderId: 1#######1
redphoneApiKey: A########################i4
server:
applicationConnectors:
- type: http
port: 9999
adminConnectors:
- type: http
port: 9998
gzip:
enabled: true
logging:
level: INFO
appenders:
- type: file
currentLogFilename: /tmp/pushserver.log
archivedLogFilenamePattern: /tmp/pushserver-%d.log.gz
archivedFileCount: 5
- type: console
下面是我的Textsecure服务器。yml或生产。yml
twilio: # Twilio SMS gateway configuration
accountId: AC##############51
accountToken: 8####################7
numbers:
-
+12132414380 #fake
# numbers:
# -
# +12015975380
localDomain: 127.0.0.1 # The domain Twilio can call back to.
push: # GCM/APN push server configuration
host: localhost
port: 9999
username: 123
password: 123
s3: # AWS S3 configuration
accessKey: A#####################Q
accessSecret: 0##########################9
# Name of the S3 bucket (needs to have been created)
# for attachments to go. Should be configured with
# correct permissions.
attachmentsBucket: signale
directory: # Redis server configuration for TS directory
url: "redis://localhost:6379/0"
cache: # Redis server configuration for general purpose caching
url: "redis://localhost:6379/1"
server:
applicationConnectors:
- type: http
port: 8080
#keyStorePath: config/example.keystore
# #keyStorePassword: example
# #validateCerts: true
adminConnectors:
- type: http
port: 8081
# #keyStorePath: config/example.keystore
# #keyStorePassword: example
# #validateCerts: true
websocket:
enabled: true
messageStore: # Postgres database configuration for message store
driverClass: org.postgresql.Driver
user: "textsecure"
password: "postgres"
url: "jdbc:postgresql://127.0.0.1:5432/textsecure_msg"
database: # Postgres database configuration for account store
# the name of your JDBC driver
driverClass: org.postgresql.Driver
# the username
user: "uname"
# the password
password: "mypas"
# the JDBC URL
url: "jdbc:postgresql://127.0.0.1:5432/textsecure_accounts"
# any properties specific to your JDBC driver:
properties:
charSet: UTF-8
# 1 楼答案
在testsecure服务器YML中,即使根本不需要功能,也需要redphone身份验证密钥,因为服务器使用相同的密钥注册自身 为此,需要在google开发者帐户中创建一个项目,并在yml文件中使用数字部分作为authkey
对于ex项目名称“my_readphone-112312”,则authkey将为112312
然后在yml中添加以下条目