Использование намерения для получения кода авторизации - PullRequest
0 голосов
/ 27 июня 2018

Я использую этот пост и ответ, чтобы попытаться получить код авторизации из моего URL перенаправления, но он не работает, но парень принял его как правильный ответ:

Как получить код авторизации с помощью Intent

Вот код, который я использовал:

public class Kiteworks_SignIn extends Activity {

Uri uri;
String redirect_uri;
String authcode;
WebView webView;
Button browser;
Intent browserIntent;
String kiteworksurl;
Intent getAuthCode;



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

    browser = findViewById(R.id.buttonBrowser);

    browser.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            getAuthCode = new Intent(Intent.ACTION_VIEW, Uri.parse("https://sync.almacgroup.com/oauth/authorize?client_id=1fb7c350-bb6a-5741-86b9-43afc2f1642f&redirect_uri=https://sync.almacgroup.com/rest/callback.html?display%3Dmobile&response_type=code&scope=&m=1&force_login=1"));
            startActivity(getAuthCode);

        }
    });
}

@Override
protected void onNewIntent(Intent intent) {
    Uri uri = getAuthCode.getData();
    if (uri != null) {
        String mainPart = uri.toString().split("#")[1];
        String[] arguments = mainPart.split("&");
        String argument = arguments[0];
        String token = argument.split("=")[1];
        Toast.makeText(this, token, Toast.LENGTH_SHORT).show();
    }
}

По сути, у меня точно такой же сценарий, как у этого парня. Мое приложение перенаправляет, и я не уверен, как извлечь код авторизации. Я отладил метод OnNewIntent, и он не перехватывает и не запускает отладку, поэтому не вижу проблем.

Вот формат моего URL перенаправления после того, как он был достигнут:

https://sync.almacgroup.com/rest/callback.html?display=mobile&code=(THEN THE CODE FOLLOWS)

Я делаю что-то другое или почему это не работает?

Спасибо

1 Ответ

0 голосов
/ 27 июня 2018

Если вам нужно отделить код от этого типа URL, то, черт возьми, вы отделите от "#". Вы можете использовать это.

    String mainPart = uri.toString();
    String[] data = mainPart.split("?");
    String arguments = data[1];
    String[] argument = arguments.split("=");
    String token = argument[1];
    Toast.makeText(this, token, Toast.LENGTH_SHORT).show();
...