2011-10-03 29 views
8

Tôi đã thấy nhiều câu hỏi tương tự nhưng không có câu trả lời tốt mặc dù một số trong số đó được chấp nhận. Tôi đã đăng ký C2DM. Tôi đã nhận được email xác nhận. Sau đó, tôi đã viết một số ứng dụng đơn giản để đăng ký C2DM. Tôi nhận được id (thử trên giả lập và trên thiết bị thực). Sau đó, tôi nhận được mã thông báo auth (với curl) cho email của tôi mà tôi đã sử dụng để đăng ký C2DM (cùng một email mà tôi sử dụng trong ứng dụng để lấy id).
Khi tôi cố gắng thực hiện thao tác đẩy (cũng với curl), tôi nhận được lỗi 401 (như mã thông báo xác thực sai).lỗi c2dm 401 khi gửi tin nhắn sau khi nhận id và mã thông báo xác thực

Tôi đọc nhiều hướng dẫn và tôi hết ý tưởng.

+0

Điều lạ lùng là khi tôi cố gắng nhận mã thông báo xác thực cho email của tôi KHÔNG BAO GIỜ được đăng ký cho c2dm, tôi cũng nhận được mã thông báo xác thực. Vì vậy, tôi nghĩ rằng mã thông báo auth của tôi được sử dụng để gửi tin nhắn phải sai. – DixieFlatline

+0

Tôi cũng gặp vấn đề tương tự. Đăng ký ứng dụng Android với C2DM sau đó gửi mã thông báo người dùng tới máy chủ web, máy chủ web của tôi nhận mã thông báo xác thực từ C2DM sau đó gửi thông báo đẩy tới ứng dụng đã đăng ký và tất cả những gì tôi nhận được là lỗi 401. Có thể có sự cố với dịch vụ C2DM. Có thể không đáng tin cậy? – jamesc

Trả lời

1

Hãy để tôi (chỉ với curl) thử nó:

Lúc đầu chúng tôi đang áp dụng cho thẻ auth:

curl.exe -v -k https://www.google.com/accounts/ClientLogin -d [email protected] -d Passwd=secret -d accountType=GOOGLE -d source=your.registered.domain -d service=ac2dm

Trong kết quả của bạn đang nhận được thẻ auth:

< HTTP/1.1 200 OK
SID=XXX
LSID=XXX
Auth=XXX
* Connection #0 to host www.google.com left intact
* Closing connection #0
* SSLv3, TLS alert, Client hello (1):

Xin lưu ý rằng phản hồi Auth có kết quả bằng chữ hoa đầu tiên: "Auth = XX X "!

Bây giờ chúng ta đang sử dụng kết quả cho yêu cầu tiếp theo nhưng với chữ cái đầu tiên chữ thường:
curl.exe -v -k --header "Authorization: GoogleLogin auth=XXX" https://android.apis.google.com/c2dm/send -d "registration_id=XXX" -d "data=helloooo" -d collapse_key=Z

Và làm việc này! Nhưng bạn đang nhận được một lỗi 401, nếu bạn đang sử dụng auth như trong phản ứng đầu tiên (chữ hoa A trong "Auth"):

curl.exe" -v -k --header "Authorization: GoogleLogin Auth=XXX" https://android.apis.google.com/c2dm/send -d "registration_id=XXX" -d "data=helloooo" -d collapse_key=Z

Vì vậy, các "auth" đề nghị 2 là trường hợp nhạy cảm. Tôi nghĩ rằng đây là một lỗ hổng 50% người dùng đang bước vào. Hy vọng rằng sẽ giúp.

0

Có thể đây là vấn đề?

http://groups.google.com/group/vogella/browse_thread/thread/95865344e6d2c734

Basucally, những "người gửi" thông số mà bạn thể chỉ định trên teh thiết bị Android phải là địa chỉ email giống như là đã đăng ký mới là người gửi (server-side).

+0

Không, ở đây sự cố là giữa người gửi (phía máy chủ) và máy chủ C2DM của Google. Nó không liên quan đến thiết bị. – Kamchatka

Các vấn đề liên quan