绑定微博

info 参考 「微博登录指南」 完成 SDK 内微博功能的初始化

绑定微博前需先登录(非匿名)

确保 SDK 版本 >= 1.2.1

WeiboComponent.associationWithWeibo(Activity, SignInCallback)

示例代码

  1. public class SignInActivity extends AppCompatActivity {
  2. private static final String TAG = "SignInActivity";
  3. private SsoHandler handler = null;
  4. private SignInCallback wbSignInCb = new SignInCallback() {
  5. // 登录成功,此时用户已登录
  6. @Override
  7. public void onSuccess() {
  8. CurrentUser user = Auth.currentUserWithoutData();
  9. Long userId = user != null ? user.getUserId() : -1;
  10. Toast.makeText(MainActivity2.this,
  11. String.format("登录成功(%s)", userId.toString()), Toast.LENGTH_SHORT).show();
  12. Log.d(TAG, user.toString());
  13. }
  14. // 用户取消登录
  15. @Override
  16. public void onCancel() {
  17. Toast.makeText(MainActivity2.this, "取消登录", Toast.LENGTH_SHORT).show();
  18. }
  19. // 登录失败(比如微博配置错误导致微博 app 授权失败、网络异常等)
  20. @Override
  21. public void onFailure(@NonNull Throwable tr) {
  22. Toast.makeText(MainActivity2.this, String.format("登录失败:%s", tr.getMessage()),
  23. Toast.LENGTH_SHORT).show();
  24. Log.e(TAG, tr.getMessage(), tr);
  25. }
  26. };
  27. @Override
  28. protected void onCreate(@Nullable Bundle savedInstanceState) {
  29. super.onCreate(savedInstanceState);
  30. setContentView(R.layout.activity_sign_in);
  31. // 点击微博登录按钮,拉起微博登录页面
  32. // 返回的 handler 需要保存并在 onActivityResult 时被调用
  33. findViewById(R.id.asso).setOnClickListener(v -> {
  34. handler = WeiboComponent.associationWithWeibo(this, wbSignInCb);
  35. });
  36. }
  37. @Override
  38. protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
  39. super.onActivityResult(requestCode, resultCode, data);
  40. // 微博登录是通过 startActivityForResult 发起的,所以这里需要处理响应
  41. if (handler != null) {
  42. handler.authorizeCallBack(requestCode, resultCode, data);
  43. }
  44. }
  45. }