2015-11-19 10 views
8

मैं अलार्म सिंक्रनाइज़िंग के लिए एक थर्ड पार्टी फिटबिट ऐप बनाने का इरादा रखता हूं।एंड्रॉइड क्रोम कस्टम टैब/फिटबिट वेब एपीआई रीडायरेक्ट नहीं होगा अगर ऐप पहले ही अधिकृत है। (OAuth2.0)

हालांकि, मुझे अपने ऐप के पंजीकरण के संबंध में कुछ कठिनाइयों का सामना करना पड़ा है, और अधिक स्पष्ट रूप से एक्सेस टोकन प्राप्त करने पर भी मेरा ग्राहक पहले से ही ऐप में पंजीकृत है। (परिदृश्य को ध्यान में रखते हुए कि उपयोगकर्ता अपना आवेदन पुनः स्थापित करता है)।

मैं Chrome कस्टम टैब का उपयोग कर रहा है (जैसा कि WebView FitBit द्वारा निषिद्ध है) पहुँच टोकन का अनुरोध करने के:

: एक आशय-फिल्टर के साथ परिभाषित कस्टम योजना के लिए पुनः निर्देशित करने पर

String url = "https://www.fitbit.com/oauth2/authorize?" + 
        "response_type=token" + 
        "&client_id=XXXXXX" + 
        "&scope=activity"+ 
        "&redirect_uri=fitbittester://logincallback"; 
      customTabsIntent.launchUrl(MainActivity.this, Uri.parse(url)); 

परीक्षण गतिविधि, लॉन्च की जानी चाहिए, जहां मैं दिया आशय से मेरी AccessToken मिल जाएगा:

public class TestActivity extends AppCompatActivity { 

String string; 

@Override 
protected void onNewIntent(Intent intent) { 
    string = intent.getDataString(); 
} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_test); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    onNewIntent(getIntent()); 
    Toast.makeText(TestActivity.this, string , Toast.LENGTH_LONG).show(); 
    Log.e("TAG", string); 
    Log.e("TAG", string.substring(string.indexOf("&access_token")+14)); 
} 

}

सबकुछ पहले रन पर ठीक काम करता है (तथ्य यह है कि क्लाइंट पहले से ही अधिकृत नहीं है), लेकिन उसके बाद यदि मैं फिर से अपना एक्सेस टोकन प्राप्त करना चाहता हूं (मुझे पता है कि मुझे इसे स्थानीय रूप से स्टोर करना चाहिए - साझाकरण सबसे अधिक संभावना है, लेकिन यह केवल परीक्षण उद्देश्यों के लिए है) क्रोम कस्टम टैब खुलेंगे और एक खाली पृष्ठ पर रहेंगे (जाहिर है यह ठीक से रीडायरेक्ट नहीं होगा)।

मैं FitBit वेब एपीआई को पढ़ लिया है और यह निम्नलिखित कहते हैं: अंतर्निहित अनुदान प्रवाह का उपयोग एक आवेदन पूर्व में जारी किए पहुँच टोकन से पहले प्राधिकरण पेज के लिए एक उपयोगकर्ता समाप्त हो गया है भेजता है, तो उपयोगकर्ता जब तक संकेत नहीं दिया जाएगा दायरा बढ़ गया है उपयोगकर्ता को एक्सेस टोकन के साथ तुरंत एप्लिकेशन पर रीडायरेक्ट कर दिया जाएगा।

तो मेरा सवाल यह है कि समस्या के बारे में मेरी सोच में कोई गलती है या
क्रोम कस्टम टैब गलती मुझे रोकना चाहिए?

अग्रिम में बहुत बहुत धन्यवाद।

+0

मैं भी यही मुद्दा का सामना करना पड़ रहा हूँ, Fitbit से बहुत ही निराशाजनक समर्थन करते हैं। मैं कस्टम क्रोम टैब व्यवहार का अध्ययन किए बिना लिखे गए अच्छे दस्तावेज कहूंगा। – pyus13

उत्तर

5

मुझे इस समस्या के लिए एक समाधान मिला है। मूल रूप से मैं Fitbit API के लिए क्वेरी के साथ यूआरएल में एक नया पैरामीटर डाल रहा हूं। ("& प्रॉम्प्ट = लॉगिन")। यह पैरामीटर उपयोगकर्ता को प्रमाणीकरण टोकन के लिए हर बार पुनः लॉगिन करने के लिए संकेत देगा, अगर वह पहले से लॉग इन हो गया है तो उसे लॉग आउट कर रहा है।

+1

क्या आपके पास गिट हब में आपका कोड है? मुझे एक ही समस्या का सामना करना पड़ रहा है, और यदि संभव हो तो मैं आपकी ओर देखना चाहूंगा – Dany19

+0

हां @ डैन 1 9 वास्तव में मेरे पास एक नकली है: https: // github।com/Loopiezlol/FitBitTester –

+0

@ Buruiană Cătălin: उपयोगकर्ता क्लिक करने के बाद कोड कैसे प्राप्त कर सकते हैं? –

0

तो मुझे लगता है कि फिटबिट 302 रीडायरेक्ट करता है जब उपयोगकर्ता पहले से लॉग इन होता है। इसलिए मैं इस समाधान का उपयोग किया (Chrome tab demo से कस्टमटैबएक्टिविटी हेल्पर के साथ इस समाधान को मिश्रित किया) और इसने समस्या को हल किया। वाह।

मैं से पहले वार्मअप फ़ंक्शन को कॉल करके समस्या को "ठीक" करने में सक्षम था जो पुनर्निर्देशित यूआरएल लोड कर रहा था।

Chrome Custom Tabs redirect to Android app will close the app

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