我一直在尝试使用普通的按钮来执行带有twitter sdk的身份验证过程,但是它似乎不起作用。有人尝试过类似的东西吗?

  • 我已经正确设置了API key 等。
  • 登录过程正确执行,但似乎未调用回调部分。
  • 我的所有日​​志都没有执行(成功或失败部分)

  • 代码
    buttonTwitterLogin.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
    
            Twitter.logIn(LoginActivity1.this, new Callback<TwitterSession>() {
                @Override
                public void success(Result<TwitterSession> twitterSessionResult) {
                    Log.i(TAG, "success");
                    Log.i(TAG, twitterSessionResult.toString());
                }
    
                @Override
                public void failure(TwitterException e) {
                    Log.e(TAG, "failed");
                }
            });
        }
    });
    

    最佳答案

    来自Twitter开发人员关系团队的Luis。 Fabric将在将来支持主题,同时您可以通过创建继承自TwitterLoginButton的自定义 View 来自定义按钮。

    炮弹示例应用程序实现了一个自定义按钮:

    public class CannonballTwitterLoginButton extends TwitterLoginButton {
        public CannonballTwitterLoginButton(Context context) {
            super(context);
            init();
        }
    
        public CannonballTwitterLoginButton(Context context, AttributeSet attrs) {
            super(context, attrs);
            init();
        }
    
        public CannonballTwitterLoginButton(Context context, AttributeSet attrs, int defStyle) {
            super(context, attrs, defStyle);
            init();
        }
    
        private void init() {
            if (isInEditMode()){
                return;
            }
            setCompoundDrawablesWithIntrinsicBounds(getResources().getDrawable(R.drawable
                    .ic_signin_twitter), null, null, null);
            setBackgroundResource(R.drawable.sign_up_button);
            setTextSize(20);
            setPadding(30, 0, 10, 0);
            setTextColor(getResources().getColor(R.color.tw__blue_default));
            setTypeface(App.getInstance().getTypeface());
        }
    }
    

    https://github.com/twitterdev/cannonball-android/blob/master/app/src/main/java/io/fabric/samples/cannonball/view/CannonballTwitterLoginButton.java

    布局文件:
    <io.fabric.samples.cannonball.view.CannonballTwitterLoginButton
        android:id="@+id/twitter_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/sign_up_button"
        android:layout_marginTop="@dimen/login_button_margin_top"
        android:layout_marginBottom="@dimen/login_button_margin_bottom"
        android:layout_marginLeft="@dimen/login_button_margin_start"
        android:layout_marginStart="@dimen/login_button_margin_start"
        android:layout_marginRight="@dimen/login_button_margin_end"
        android:layout_marginEnd="@dimen/login_button_margin_end"
        android:text="@string/sign_in_with_twitter"
        android:textColor="@color/grayish_blue"
        android:textSize="@dimen/login_button_text_size"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true" />
    

    https://github.com/twitterdev/cannonball-android/blob/master/app/src/main/res/layout/activity_login.xml

    回调设置:
    private void setUpTwitterButton() {
        twitterButton = (TwitterLoginButton) findViewById(R.id.twitter_button);
        twitterButton.setCallback(new Callback<TwitterSession>() {
            @Override
            public void success(Result<TwitterSession> result) {
                SessionRecorder.recordSessionActive("Login: twitter account active", result.data);
                startThemeChooser();
            }
    
            @Override
            public void failure(TwitterException exception) {
                Toast.makeText(getApplicationContext(),
                        getResources().getString(R.string.toast_twitter_signin_fail),
                        Toast.LENGTH_SHORT).show();
                Crashlytics.logException(exception);
            }
        });
    }
    

    https://github.com/twitterdev/cannonball-android/blob/master/app/src/main/java/io/fabric/samples/cannonball/activity/LoginActivity.java

    我强烈建议您克隆代码并对其进行研究。

    关于android - 在Twitter Fabric中使用自定义登录按钮吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27267809/

    10-10 03:49