在Twitter Fabric中使用自定义登录按钮吗? [英] Using custom login button with 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());}}
布局文件:
< 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"/>
回调设置:
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);}});}
我强烈建议您克隆代码并对其进行查看.
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());
}
}
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" />
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);
}
});
}
I strongly recommend you to clone the code and take a look on it.
这篇关于在Twitter Fabric中使用自定义登录按钮吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!