Redirect_URI 用于 Android REST 客户端
Redirect_URI for Android REST client
我正在 android 上构建一个 REST 客户端以与 Bitbucket API 通信。
我在使用 OAUTH2.0 时遇到问题。
- 从 Bitbucket 提供的docs,你必须创建一个
"consumer" 以获取用于的ClientID(Key)和Secret
你的 android 应用程序
- 在消费者创建表单中,有 "Callback URL"(我理解为 Bitbucket 将要创建的网页或位置
在用户完成授予应用程序权限后将用户带到
(即登录)
- 在我的 android 应用程序中,我希望 android 设备在用户授予权限后返回到我的应用程序(例如您如何使用 google 帐户登录网站,在 google 的权限页面上填写您的凭据后,您将返回到您所在的原始页面)
实现了这一点
- 将此添加到 activity 中,其中登录发生在 manifest.xml
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="redirecturi"
android:scheme="your" />
</intent-filter>
将此发送到 Bitbucket
private final String redirectUri = "your://redirecturi";
@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("" + "/login" + "?client_id=" + clientId + "&redirect_uri=" + redirectUri));
Uri.parse("https://bitbucket.org/site/oauth2/authorize" + "?client_id=" + clientId + "&redirect_uri=" + redirectUri));
startActivity(intent);
}
});
}
我的问题是:
- 如何在 Bitbucket 消费者对象和我的应用程序请求中配置重定向 URI 或回调 URL 以确保 android 设备返回到我的应用程序,这样我的应用程序就可以捕获来自 Bitbucket 的响应(以及此响应应具有我需要的 access_token)。
管理此问题的一种简单方法是使用 WebView
而不是通过意图操作 OAuth link。每当您在 WebView 中被重定向时,您实际上都可以检查 url。为此,您必须覆盖
public boolean shouldOverrideUrlLoading(WebView view, String url)
每当您被重定向到另一个 link(或本例中的回调 uri)时,您可以检查或比较获得的 url 并相应地进行。
我正在 android 上构建一个 REST 客户端以与 Bitbucket API 通信。 我在使用 OAUTH2.0 时遇到问题。
- 从 Bitbucket 提供的docs,你必须创建一个 "consumer" 以获取用于的ClientID(Key)和Secret 你的 android 应用程序
- 在消费者创建表单中,有 "Callback URL"(我理解为 Bitbucket 将要创建的网页或位置 在用户完成授予应用程序权限后将用户带到 (即登录)
- 在我的 android 应用程序中,我希望 android 设备在用户授予权限后返回到我的应用程序(例如您如何使用 google 帐户登录网站,在 google 的权限页面上填写您的凭据后,您将返回到您所在的原始页面)
- 将此添加到 activity 中,其中登录发生在 manifest.xml
<intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:host="redirecturi" android:scheme="your" /> </intent-filter>
将此发送到 Bitbucket
private final String redirectUri = "your://redirecturi"; @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("" + "/login" + "?client_id=" + clientId + "&redirect_uri=" + redirectUri)); Uri.parse("https://bitbucket.org/site/oauth2/authorize" + "?client_id=" + clientId + "&redirect_uri=" + redirectUri)); startActivity(intent); } }); }
我的问题是: - 如何在 Bitbucket 消费者对象和我的应用程序请求中配置重定向 URI 或回调 URL 以确保 android 设备返回到我的应用程序,这样我的应用程序就可以捕获来自 Bitbucket 的响应(以及此响应应具有我需要的 access_token)。
管理此问题的一种简单方法是使用 WebView
而不是通过意图操作 OAuth link。每当您在 WebView 中被重定向时,您实际上都可以检查 url。为此,您必须覆盖
public boolean shouldOverrideUrlLoading(WebView view, String url)
每当您被重定向到另一个 link(或本例中的回调 uri)时,您可以检查或比较获得的 url 并相应地进行。