2016-01-23 78 views
0

我想通過標準瀏覽器執行OAuth2授權過程。 像這樣:如何從Android瀏覽器接收URL?

static public class Helper extends Activity { 

    private static final int OAUTH2_CODE = 1; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     Uri uri = Uri.parse("my url"); 
     startActivityForResult(intent, OAUTH2_CODE); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     if (requestCode == OAUTH2_CODE) { 
      accessToken = getAccessToken(data); // method to get access token 
     } 
    } 
} 

當方法startActivityForResult被稱爲瀏覽器的啓動和授權進行。在此之後,方法onActivityResult被調用,但我在方法onActivityResult中收到null而不是某些數據。

我用intent-filerAndroidManifest.xml處理瀏覽器的成功案例重定向,但我想用startActivityForResultonActivityResult

回答

1

總之,這是不可能的。

OAuth2背後的整個想法就是這種回調,您的默認瀏覽器將不知道如何處理回調數據。

它必須正確接收URI,解析數據,然後將數據返回到您的應用程序 - 您應該自己做的事情。

會發生什麼是重定向URI被調用,如果你的組件匹配組件的意圖過濾器將開始。 這些回調結果您將不得不在onNewIntentonCreate/onResume中處理,具體取決於您選擇的體系結構。