在Twitter Fabric中使用自定义登录按钮吗? [英] Using custom login button with Twitter Fabric?

查看:76
本文介绍了在Twitter Fabric中使用自定义登录按钮吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

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

代码

  buttonTwitterLogin.setOnClickListener(new View.OnClickListener(){@Overridepublic void onClick(View view){Twitter.logIn(LoginActivity1.this,new Callback< TwitterSession>(){@Override公共无效成功(Result< TwitterSession> twitterSessionResult){Log.i(TAG,成功");Log.i(TAG,twitterSessionResult.toString());}@Override公共无效失败(TwitterException e){Log.e(TAG,失败");}});}}); 

来自Twitter开发人员关系团队的

解决方案

Luis.Fabric将在将来支持主题,与此同时,您可以通过创建一个继承自 TwitterLoginButton 的自定义视图来自定义按钮.

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

 公共类CannonballTwitterLoginButton扩展了TwitterLoginButton {公共CannonballTwitterLoginButton(上下文上下文){超级(上下文);在里面();}公共CannonballTwitterLoginButton(上下文上下文,AttributeSet属性){超级(上下文,attrs);在里面();}public CannonballTwitterLoginButton(Context context,AttributeSet attrs,int defStyle){超级(上下文,属性,defStyle);在里面();}私人无效init(){如果(isInEditMode()){返回;}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/CannonballTwitterLogLogButton.java

布局文件:

 < io.fabric.samples.cannonball.view.CannonballTwitterLoginButtonandroid: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公共无效成功(结果< TwitterSession>结果){SessionRecorder.recordSessionActive(登录:Twitter帐户处于活动状态",result.data);startThemeChooser();}@Override公共无效失败(TwitterException异常){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

我强烈建议您克隆代码并对其进行查看.

I have been trying to use a normal button to execute the authentication process with the twitter sdk but it does not seem to work. Anyone have tried anything similar?

  • I have correctly setup the API keys, etc..
  • The login process execute correctly but the callback part seems not to be called.
  • None of my logs are executed (Neither the success or failure part)

The code

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");
            }
        });
    }
});

解决方案

Luis from Developer Relations team at Twitter. Fabric will support theming on the future, meanwhile you can customize the button by creating a custom view that inherits from TwitterLoginButton.

Cannonball sample app implements a custom button:

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

Layout file:

<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

Callback setup:

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

I strongly recommend you to clone the code and take a look on it.

这篇关于在Twitter Fabric中使用自定义登录按钮吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆