No se puede volver del browser a la aplicación

Estoy intentando autorizar mi aplicación GitHub y volver a mi aplicación. Abro la página de autorización con Intent pero no puedo volver a mi aplicación desde el browser. ¿Podría mirar mi código y decirme dónde lo hice mal?

LoginActivity.java

private final String clientId="myclientid"; private final String clientSecret="myclientsecret"; private final String networkingirectUri="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+ "&networkingirect_uri="+networkingirectUri+ "&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(networkingirectUri)) { 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> 

Mi aplicación GitHub y networkingirigir uri:

enter image description here

¿Hay alguna razón por la que está usando "http" y "localhost" para el filter de intención? Creo que su problema es que el browser siempre manejará la networkingirección ya que comprende el protocolo (http). Usaría un protocolo diferente y un nombre de host. Por ejemplo:

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

Asegúrese de actualizar la URL de callback de Autorización a "oauth: // consumcodecode" en GitHub.

Simplemente hecho usando su propio browser. Significa usar webview para iniciar session en su aplicación. Es fácil y creo que resolverá su problema.

Intente utilizar startActivityForResult(intent) lugar de startActivity(intent) en su loginButton onClick.