/**
* 通用跳转授权业务 Demo
*/
public void openAuthScheme(View view) {
// 传递给支付宝应用的业务参数
final Map<String, String> bizParams = new HashMap<>();
bizParams.put("url", "https://authweb.alipay.com/auth?auth_type=PURE_OAUTH_SDK&app_id=2016051801417322&scope=auth_user&state=init");
// 支付宝回跳到您的应用时使用的 Intent Scheme。
// 请设置为一个不和其它应用冲突的值,并在 AndroidManifest.xml 中为 AlipayResultActivity 的 android:scheme 属性
// 指定相同的值。实际使用时请勿设置为 __alipaysdkdemo__ 。
// 如果不设置,OpenAuthTask.execute() 在用户未安装支付宝,使用网页完成业务流程后,将无法回跳至您的应用。
final String scheme = "__alipaysdkdemo__";
// 防止在支付宝客户端被强行退出等意外情况下,OpenAuthTask.Callback 一定时间内无法释放,导致
// Activity 泄漏
final WeakReference<Activity> ctxRef = new WeakReference<>(this);
// 唤起授权业务
final OpenAuthTask task = new OpenAuthTask(this);
task.execute(
scheme, // Intent Scheme
OpenAuthTask.BizType.AccountAuth, // 业务类型
bizParams, // 业务参数
new OpenAuthTask.Callback() {
@Override
public void onResult(int i, String s, Bundle bundle) {
final Context ref = ctxRef.get();
if (ref != null) {
showAlert(ref, String.format("结果码: %s\n结果信息: %s\n结果数据: %s", i, s, bundleToString(bundle)));
}
}
}, // 业务结果回调
true); // 是否需要在用户未安装支付宝客户端时,使用 H5 中间页中转。建议设置为 true。
}
private static String bundleToString(Bundle bundle) {
if (bundle == null) {
return "null";
}
final StringBuilder sb = new StringBuilder();
for (String key : bundle.keySet()) {
sb.append(key).append("=>").append(bundle.get(key)).append("\n");
}
return sb.toString();
}