使用意图检索授权码

时间:2018-06-27 11:32:17

标签: java android http android-intent oauth-2.0

我正在使用此帖子和答案来尝试从我的重定向url中检索授权代码,但是它无法正常工作,但该人已将其作为正确答案:

How to get Authorization code using Intent

这是我使用的代码:

public int createDataDAOImplentation(UserData c){
    int i=0; String sql="";
    try
    {
        ds.setPs("insert into contact(id,firstName,lastName,email,dob,gender)values(contact_seq.nextval,?,?,?,?,?)");
        ds.getPs().setString(1, c.getFirstname());
        ds.getPs().setString(2, c.getLastName());
        ds.getPs().setString(3, c.getEmail());
        ds.getPs().setint(4, c.getDob());
        ds.getPs().setLong(5, c.getGender());
        ds.getPs().executeQuery();
        ResultSet rs = ds.getPs().getGeneratedKeys();
        System.out.println("iam");
        if(rs.next()){
            i = rs.getInt(1);
            System.out.println("in"0);
        }
        ds.getCon().commit();
        ds.getCon().close();
    }
    catch(SQLException ex)
}

基本上,我和这个家伙的场景完全一样。我的应用程序重定向,我不确定如何提取授权码。我已经调试了OnNewIntent方法,它没有捕获或运行调试程序,所以我看不到是否有任何问题。

这是到达重定向网址后的格式:

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

我在做其他事情还是为什么不起作用?

谢谢

1 个答案:

答案 0 :(得分:0)

如果您需要从此类网址中拆分代码,为什么要从“#”中拆分出来。 您可以使用它。

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