2015-11-19 42 views
8

Alarm senkronizasyonu için üçüncü taraf bir fitbit uygulaması oluşturmayı planlıyorum. Android Uygulamaya zaten yetki verildiğinde Chrome özel sekmeleri/Fitbit web API'sı yeniden yönlendirilmez. (OAuth2.0)

Ancak, uygulamanızın kaydına ilişkin bazı zorluklarla karşılaştım; daha önce istemciye uygulamanızın kayıtlı olmasına rağmen, erişim belirtecini alma konusunda daha açık bir şekilde karşılaştım. (Bir kullanıcının uygulamasını yeniden yüklediği senaryoyu dikkate alarak).

(WebView Fitbit tarafından yasaklanmıştır gibi) Ben erişim göstergesi istemek için Chrome özel sekmeler kullanıyorum:

: Intent-filtreli tanımlanan özel şemaya yönlendirme üzerine

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)); 

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)); 
} 
: Bana verilen Niyet benim AccessToken elde edeceğiniz yerlere

Test Etkinliği baĢlatmalı}

İlk kullanımda her şey iyi çalışıyor (istemcinin zaten yetkilendirilmemiş olması şartıyla sağlanıyor), ancak daha sonra erişim belirtecimi tekrar almak isterseniz (yerel olarak depolamam gerektiğini biliyorum - SharedPreferences büyük olasılıkla, Ancak bu yalnızca test amaçlıdır. Krom özel sekmeler açılacak ve boş bir sayfada kalacaktır (görünüşte doğru bir şekilde yönlendirilmeyecektir).

FitBit WEB API'sini okudum ve şunları yazıyor: Implicit Grant akışını kullanan bir uygulama, önceden verilmiş erişim belirtecinin süresi dolmadan önce bir kullanıcı yetkilendirme sayfasına gönderirse, kullanıcı sizden kapsamı arttı. Kullanıcı bir erişim belirteci ile hemen uygulamaya yönlendirilecek.

Sorunuzla ilgili bir düşüncemde sorun olup olmadığını veya
bir krom özel sekme hatasıyla kesişmem gerekiyor mu?

Çok önceden şimdiden teşekkür ederiz.

+0

Ben de aynı sorunla karşı karşıya am, Fitbit çok hayal kırıklığı desteği. Özel chrome sekme davranışlarını incelemeden yazdıkları güzel belgeleri söyleyebilirim. – pyus13

cevap

5

Bu sorun için bir çözüm buldum. Temel olarak, Url'ye Fitbit API'si sorgusuyla yeni bir parametre ekliyorum. ("& prompt = giriş"). Bu parametre, kullanıcıya her oturum açışında, yetkilendirme belirtecini sorguladığında, oturum açmışsa onu yeniden oturum açmasını isteyecektir.

+1

Kodunuzu Git Hub'da var mı? Ben aynı sorunla karşı karşıyayım, ve eğer mümkün – Dany19

+0

evet @ Dany19 bir mockup var: https: // github.com/Loopiezlol/FitBitTester –

+0

@ Buruiană Cătălin: Kullanıcı tıklamasına izin verdikten sonra kodu nasıl alabilirim? –