Tôi không thể tìm ra cách sử dụng C2DM với oAuth 2.0 nhưng đây là những gì tôi đã thử. Hy vọng điều này có thể giúp một người nào đó giải quyết vấn đề tương tự
Tôi tìm thấy tài nguyên hữu ích tại http://aleksmaus.blogspot.com/2012/01/oauth2-with-google-c2dm-push.html Nhưng khi tôi cố gắng gửi thư bằng C2DM qua OAuth 2.0, nó không hoạt động khi đã làm tốt với ClientLogin.
Đây là cách tôi đã làm với giao diện điều khiển và trình duyệt web (Tôi biết, bạn đã hỏi thi PHP Nhưng tôi hy vọng điều này cũng có thể hữu ích cho bạn.)
Khách hàng đăng nhập: (Kế)
có auth token từ:
$ curl -k -d "accountType=HOSTED_OR_GOOGLE&service=ac2dm&source=test-1.0&Email=[email account with @gmail.com without brace]&Passwd=[Google account password without brace]" https://www.google.com/accounts/ClientLogin
Và gửi tin nhắn C2DM như thế này:
$ curl -k --header "Authorization: GoogleLogin auth=[my ClientLogin auth key without brace]" -d "registration_id=[can be acquired from Android application]" --trace c2dm_trace.txt -d collapse_key=0 https://android.apis.google.com/c2dm/send
Sau đó, ứng dụng của tôi nhận được thành công C2DM nhắn
OAuth 2.0: (thất bại)
có một OAuth 2.0 auth chứng chỉ từ trình duyệt web bằng cách truy cập url:
https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=[can be acquired from API Access menu in your API Console]&redirect_uri=urn:ietf:wg:oauth:2.0:oob&scope=https%3A%2F%2Fandroid.apis.google.com%2Fc2dm&access_type=offline
(Google API Console: https://code.google.com/apis/console/)
Và gửi như thế này:
$ curl -k -H "Authorization: Bearer [my auth key from oAuth]" --trace curl_trace.txt -d "registration_id=[an be acquired from Android application]" -d "data.message=something to talk" -d collapse_key=0 https://android.apis.google.com/c2dm/send
Sau đó có 401 phản ứng lỗi :(
Có bất cứ ai có thể chỉ ra những gì tôi đã làm điều gì sai?
Sửa
tôi đã tìm thấy câu "AC2DM hiện là một API trong Labs" qua đường bưu điện mà bạn có thể nhận được từ Google khi đăng ký C2DM. Và ClientLogin deprecation policy will not apply to versions, features, and functionality labeled as "experimental." Tôi không chắc chắn nhưng tôi nghĩ rằng đây là lý do mã của chúng tôi không hoạt động.
Tất nhiên, tôi hy vọng ClientLogin cũng bị phản đối và thay thế bằng OAuth 2.0 sớm
bạn đã xem xét khung yii http://www.yiiframework.com/extension/c2dm/ – Suchi
Tôi rất mong chờ câu trả lời ... +1 cho câu hỏi. – drulabs
@Suchi Tôi đã sử dụng khung công tác Zend nên tôi sẽ không muốn thêm một khung công tác khác cho điều này. Mặc dù có vẻ rất tốt và đơn giản. Nó có sử dụng OAuth2.0 không? – Doc