Fabric Log in with twitter 按钮显示为灰色

Posted

技术标签:

【中文标题】Fabric Log in with twitter 按钮显示为灰色【英文标题】:Fabric Log in with twitter button is greyed out 【发布时间】:2015-03-20 03:20:24 【问题描述】:

我按照说明使用 Fabric 在我的自定义应用中实现登录。

问题是当我运行我的应用程序时,按钮是灰色的。

这是我的堆栈跟踪中的错误:

03-20 11:06:32.456    6509-6509/com.jan.simplesharing E/Twitter﹕ Must Initialize Fabric before using singleton()

03-20 11:06:32.546    6509-6509/com.jan.simplesharing E/IMGSRV﹕ :0: PVRDRMOpen: TP3, ret = 46
03-20 11:06:32.556    6509-6509/com.jan.simplesharing E/IMGSRV﹕ :0: PVRDRMOpen: TP3, ret = 49
03-20 11:06:32.556    6509-6509/com.jan.simplesharing E/IMGSRV﹕ :0: PVRDRMOpen: TP3, ret = 50
03-20 11:06:32.556    6509-6509/com.jan.simplesharing E/IMGSRV﹕ :0: PVRDRMOpen: TP3, ret = 50
03-20 11:06:32.556    6509-6509/com.jan.simplesharing E/IMGSRV﹕ :0: PVRDRMOpen: TP3, ret = 50
03-20 11:06:32.566    6509-6509/com.jan.simplesharing E/IMGSRV﹕ :0: PVRDRMOpen: TP3, ret = 52

但我也在我的活动中初始化了结构。

这是一个sn-p:

import io.fabric.sdk.android.Fabric;

import com.twitter.sdk.android.Twitter;
import com.twitter.sdk.android.core.TwitterAuthConfig;
import com.twitter.sdk.android.core.Callback;
import com.twitter.sdk.android.core.Result;
import com.twitter.sdk.android.core.TwitterException;
import com.twitter.sdk.android.core.TwitterSession;
import com.twitter.sdk.android.core.identity.TwitterLoginButton;

public class MainActivity extends Activity 

//copied key and secret from fabric
private static final String TWITTER_KEY = "my key here"; 
private static final String TWITTER_SECRET = "my secret here";

private TwitterLoginButton loginButton;

@Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    /* Twitter */
    TwitterAuthConfig authConfig = new TwitterAuthConfig(TWITTER_KEY, TWITTER_SECRET);
    Fabric.with(this, new Twitter(authConfig));

    loginButton = (TwitterLoginButton) findViewById(R.id.twitter_login_button);
    loginButton.setCallback(new Callback<TwitterSession>() 
        @Override
        public void success(Result<TwitterSession> result) 
            // Do something with result, which provides a TwitterSession for making API calls
        

        @Override
        public void failure(TwitterException exception) 
            // Do something on failure
        
    );


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    super.onActivityResult(requestCode, resultCode, data);

    /* Twitter */
    loginButton.onActivityResult(requestCode, resultCode, data);

【问题讨论】:

【参考方案1】:
setContentView(R.layout.activity_main);

/* Twitter */
TwitterAuthConfig authConfig = new TwitterAuthConfig(TWITTER_KEY, TWITTER_SECRET);
Fabric.with(this, new Twitter(authConfig));

您必须在 膨胀 Twitter 按钮之前初始化 Fabric。因为否则当调用 Twitter 按钮构造函数时,它不知道如何连接 twitter api。简而言之,这就是错误描述的内容。

6509-6509/com.jan.simplesharing E/Twitter﹕ Must Initialize Fabric before using singleton()

通常,您可以在 Application 类中初始化 Fabric。这就是他们在示例展示应用程序中所做的:https://github.com/twitterdev/cannonball-android/blob/master/app/src/main/java/io/fabric/samples/cannonball/App.java#L98

【讨论】:

如何从 On Reboot Broadcast Receiver 使用它?因为在那之前我们将没有应用程序上下文来初始化它。 检查 android 生命周期文档。应用程序类总是在其他任何事情之前创建。 developer.android.com/reference/android/app/… 在 setContentView TwitterAuthConfig authConfig = new TwitterAuthConfig("KEY", "SECRET_KEY"); Fabric.with(this, new Twitter(authConfig)); setContentView(R.layout.activity_main); 987654326@之前添加这些行 我添加到我的应用程序类中,现在它工作正常...谢谢@SergiiPechenizkyi...!!!【参考方案2】:

按照以下步骤使用 Fabric 实现 twitter 登录:

创建一个扩展 Application 类的类并将以下代码复制到其中 -

TwitterAuthConfig authConfig = new TwitterAuthConfig(TWITTER_KEY, TWITTER_SECRET);
Fabric.with(this, new Twitter(authConfig));

Fabric.with() 执行初始化功能。 不要忘记在你的 android 清单文件中提及这个应用程序类

 <application
    android:name="com.demoapp.BaseApp"
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:theme="@android:style/Theme.Black" >

【讨论】:

【参考方案3】:

您是否已将 TWITTER_KEY 和 TWITTER_SECRET 替换为应用程序的密钥?


如果没有,您应该在https://apps.twitter.com/ 上注册一个 twitter 应用程序并使用平台为您提供的密钥。此外,请确保您按照教程 (https://dev.twitter.com/twitter-kit/android/configure) 的步骤进行应用配置。

【讨论】:

链接不可用

以上是关于Fabric Log in with twitter 按钮显示为灰色的主要内容,如果未能解决你的问题,请参考以下文章

[Android Pro] 开发一流的 Android SDK:Fabric SDK 的创建经验

使用 Fabric 找不到符号导入 com.twitter.sdk.android.Twitter

React-native Log in with Facebook App 刷新应用

无法为 DEBUG 版本禁用 Fabric 的 Crashlytics with Firebase

Can't locate Log/Dispatch.pm in @INC /Makefile out-of-date with respect to Makefile.PL

Tungsten Fabric SDN — Orchestrator 集成部署模式 — with OpenStack