2016-03-29 31 views
0

GitHub uygulamamı yetkilendirmeye çalışıyorum ve uygulamaya geri dönüyorum. Intent ile yetkilendirme sayfasını açıyorum, ancak tarayıcımdan uygulamaya geri dönemem. Lütfen koduma bakıp nerede yanlış anladığımı söyler misin?Tarayıcıdan uygulamaya geri dönemiyorum

LoginActivity.java

private final String clientId="myclientid"; 
private final String clientSecret="myclientsecret"; 
private final String redirectUri="http://localhost"; 
private final String state="randomshit"; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_login); 

    Button loginButton = (Button) findViewById(R.id.loginbutton); 
    loginButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(Intent.ACTION_VIEW, 
        Uri.parse("https://github.com/login/oauth/authorize?" + 
          "&client_id="+clientId+ 
          "&redirect_uri="+redirectUri+ 
          "&state="+state) 
        ); 
      startActivity(intent); 
     } 
    }); 
} 


@Override 
protected void onResume() { 
    super.onResume(); 

    // the intent filter defined in AndroidManifest will handle the return from ACTION_VIEW intent 
    Uri uri = getIntent().getData(); 

    if (uri != null && uri.toString().startsWith(redirectUri)) { 
     String code = uri.getQueryParameter("code"); 

     if (code != null) { 
      Log.d("code",code); 
     } 
    } 

} 

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.figengungor.retrogithub"> 

    <uses-permission android:name="android.permission.INTERNET" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity android:name=".MainActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <activity android:name=".LoginActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.VIEW"></action> 
       <category android:name="android.intent.category.DEFAULT" /> 
       <category android:name="android.intent.category.BROWSABLE" /> 
       <data 
        android:host="localhost" 
        android:scheme="http" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 

Benim GitHub uygulaması ve yönlendirme uri:

enter image description here

+0

"Tarayıcımdan uygulamamıma geri dönemem" ile ne demek istiyorsunuz? Aldığın cevap nedir? – Jas

+0

Telefondaki 'geri düğmesine' bastığınızda ne olur? –

+0

Yetkilendirmeden sonra, redirectUri'ye yönlendiriliyor ve kod parametresi redirectUri'ye ekleniyor, bu da yetkilendirmenin başarılı olduğu anlamına geliyor. Ben redirectUri ekledim niyet filtresinde yeniden yönlendirme ile eşleşirse, uygulamaya geri gitmeli ve sonra onResume kısmım kod parametresini çıkarmalı. Bu şekilde çalışması gerekmez mi? Düğme tıklandığında –

cevap

0

Bu sadece kendi tarayıcı kullanın tarafından yapılır. Uygulamanızda kolaylık sağlamak için webview kullanın ve sorununuzu çözeceğini düşünüyorum.

+0

Bu alternatifi biliyorum ama neden bu yaklaşımla çalışmadığını öğrenmek istedim. –

0

Oturum açmadaButton onClick'te startActivity(intent) yerine startActivityForResult(intent) kullanmayı deneyin.

1

Amaç filtresi için "http" ve "localhost" kullanmanın bir nedeni var mı? Bence senin sorunun, tarayıcının her zaman protokolü (http) anladığı için yönlendirme ile uğraşmasıdır. Farklı bir protokol ve ana bilgisayar adı kullanırdım. Örneğin: GitHub'dan: "// consumecode oauth"

<activity android:name=".LoginActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.VIEW"></action> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <category android:name="android.intent.category.BROWSABLE" /> 
      <data 
       android:host="consumecode" 
       android:scheme="oauth" /> 
     </intent-filter> 
    </activity> 

Eğer Yetkilendirme geri arama URL'sini güncellemek emin olun.

İlgili konular