2012-04-26 12 views
11

नोट: इससे पहले कि आप पर पढ़ने अपना समय खर्च कृपया जान लें कि C2DM ही अब पदावनत और GCM (http://developer.android.com/ ने ले ली है गाइड/गूगल/gcm/c2dm.html)C2DM (ClientLogin बहिष्कृत हो गई है!)

- मूल प्रश्न -

हम पीएचपी सर्वर-साइड कोड को लागू करने C2DM का उपयोग कर Android उपकरणों के लिए संदेशों को पुश करने के लिए उदाहरण कोड है?

मैंने कई कोड नमूने खोजे हैं जो पुराने प्रमाणीकरण विधि क्लाइंटलॉगिन का उपयोग कर रहे हैं जो बहिष्कृत है। संदर्भ: https://developers.google.com/accounts/docs/AuthForInstalledApps (महत्वपूर्ण:। ClientLogin आधिकारिक तौर पर 20 अप्रैल, 2012 यह हमारी निंदा नीति के अनुसार काम करना जारी रखेंगे के रूप में पदावनत किया गया है, लेकिन हम OAuth 2.0 के लिए जितनी जल्दी हो सके विस्थापित करने के लिए प्रोत्साहित करते हैं)

+0

क्या आपने yii ढांचे को देखा है http://www.yiiframework.com/extension/c2dm/ – Suchi

+1

मैं उत्तर के लिए बहुत उत्सुक हूं ... प्रश्न के लिए +1। – drulabs

+0

@ सुची मैं पहले से ही ज़ेंड फ्रेमवर्क का उपयोग कर रहा हूं इसलिए मैं इसके लिए एक और ढांचा नहीं जोड़ना चाहता हूं। हालांकि यह बहुत अच्छा और सरल दिखता है। क्या यह OAuth2.0 का उपयोग करता है? – Doc

उत्तर

4

कि C2DM साथ लागू नहीं होता है के बाद से एक की मेजबानी की accountif आप देख https://developers.google.com/accounts/docs/AuthForInstalledApps यह

saids

ClientLogin का उपयोग किया जा सकता है के साथ प्रतिस्थापित किया Google नियमित और होस्ट किए गए खातों दोनों तक पहुंच अधिकृत करने के लिए। एक होस्ट किया गया खाता एक उपयोगकर्ता खाता है जो Google Apps सेवा का हिस्सा है।

इसके अलावा, अगर आप देख ग्राफिक एक यूआई इंटरफेस के बाद से कोई कैप्चा शामिल है के रूप में उपयोगकर्ता के बीच एक स्पष्ट बातचीत है।

enter image description here

संपादित

BTW आप से इस पोस्ट को C2DM तंत्र अभी भी फिर भी कुंजी अक्टूबर 2011 से पहले समाप्त हो गई है करने के लिए जा रहे थे, ताकि आप उन्हें फिर से बनाने ClientLogin का उपयोग किया जाएगा देख सकते हैं। ClientLogin को बहिष्कृत करने से 8 दिन पहले यह एक बहुत ही हालिया पोस्ट है। C2DM Client Login Key

+0

आप सही हैं, हमें अव्यवस्था सूचना के बारे में चिंता किए बिना क्लाइंटलॉगिन के साथ आगे बढ़ना चाहिए। इसके बारे में अधिक चर्चा यहां देखी जा सकती है http://stackoverflow.com/a/10859270/1104697 – Doc

0

Here

आप एक नज़र डाल सकते हैं, यह मेरे लिए काम करता है।

आपको अपना डिवाइस पंजीकरण प्राप्त करने की आवश्यकता है, और post.php पर अपना c2dm खाता ईमेल पता और पासवर्ड दर्ज करें।

और दूसरी चीज जिसे आपको जानने की आवश्यकता है c2dm.php के बारे में है, एक त्रुटि तब होती है जब यह सर्वर प्रतिक्रिया को "200 ठीक" के रूप में जांचने का प्रयास करता है। क्योंकि यह शरीर से यह प्रतिक्रिया प्राप्त करने की कोशिश कर रहा है। बस उसमें लाइन पर टिप्पणी करें, फिर चलाएं।

+0

क्षमा करें मैंने अभी नहीं देखा है कि क्लाइंटलॉगिन के बारे में आपका मतलब बहिष्कृत है। मेरा जवाब क्लाइंटलॉगिन का भी उपयोग करता है। – osayilgan

2

मुझे पता नहीं लगा कि ओउथ 2.0 के साथ सी 2 डीएम का उपयोग कैसे किया जाए, लेकिन यहां मैंने जो कोशिश की है, वह यहां है। उम्मीद है कि यह किसी को समान समस्या

हल करने के लिए मैं एक संसाधन है कि http://aleksmaus.blogspot.com/2012/01/oauth2-with-google-c2dm-push.html में उपयोगी होगा पाया लेकिन यह जबकि ClientLogin के साथ एक अच्छा काम किया है काम नहीं किया, जब मैं OAuth 2.0 के माध्यम से C2DM साथ संदेश भेजने की कोशिश की मदद कर सकते हैं।

इस तरह मैं कंसोल और वेब ब्राउज़र (मुझे पता है, आप PHP कार्यान्वयन पूछा है लेकिन मुझे आशा है कि यह भी आप के लिए सहायक हो सकता है।)


क्लाइंट प्रवेश के साथ किया था: (सफल)

से प्रमाणीकरण टोकन मिला:

$ 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 

और इस तरह C2DM संदेश भेजा:

$ 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 

फिर अपने आवेदन सफलतापूर्वक प्राप्त C2DM संदेश


OAuth 2.0: (विफल)

एक OAuth 2 मिला है।

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 कंसोल: https://code.google.com/apis/console/) तक पहुँचने यूआरएल द्वारा वेब ब्राउज़र से 0 प्रमाणन क्रेडेंशियल

और इस तरह भेजा:

$ 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 

तब मिला 401 त्रुटि प्रतिक्रिया :(


क्या वहां है कोई भी जो इंगित कर सकता है कि मैंने कुछ गलत किया है?

संपादित

मैं वाक्य पाया है मेल है कि आप गूगल से प्राप्त हो सकता है C2DM रजिस्टर जब में "AC2DM वर्तमान में लैब्स में एक एपीआई है।" और ClientLogin deprecation policy will not apply to versions, features, and functionality labeled as "experimental." मुझे यकीन नहीं है लेकिन मुझे लगता है कि यही कारण है कि हमारे कोड काम नहीं करते थे।

बेशक, मुझे आशा है कि ClientLogin भी पदावनत है और जल्द ही OAuth 2.0

+0

401 तब होगा जब आप निर्दिष्ट संसाधन को देखने/एक्सेस करने के लिए अधिकृत नहीं हैं। वर्जित के समान, सुनिश्चित करें कि आपका ओथ टोकन मान्य है, समाप्त नहीं हुआ है और कोई संभावित टाइपो/त्रुटियां हैं। आपका कर्ल अनुरोध मुझे ठीक लग रहा है। – Tim

+0

@Tim // उत्तर के लिए धन्यवाद। लेकिन मैंने पहले ही अपने ओएथ क्रेडेंशियल की जांच की है जो मैंने 401 प्रतिक्रिया देखी जब वैध है। मुझे लगता है कि यह अभी तक समर्थित नहीं है क्योंकि सी 2 डीएम अभी भी बीटा में है :( –

संबंधित मुद्दे