2

我正在尝试集成 twitter 登录。twitter的登录按钮是灰色的。我在某处读到我必须在设置内容视图之前添加这些行以使其工作:

TwitterAuthConfig authConfig =  new TwitterAuthConfig(
                getString(R.string.twitter_consumer_key),
                getString(R.string.twitter_consumer_secret));

        Fabric.with(this, new Twitter(authConfig));//here,i am having problem

        setContentView(R.layout.activity_cover);

但是 android studio 无法识别“Fabric”。它有红色。这是代码:

Fabric.with(this, new Twitter(authConfig));

此外,“Twitter”下方有一条红色下划线,我有以下错误:

'Twitter(com.twitter.sdk.android.core.TwitterConfig)' 在 'com.twitter.sdk.android.core.Twitter' 中具有私有访问权限

另外,我试过android studio的fabric插件,但没有twitter登录选项:

面料插件

4

3 回答 3

3

在 build.gradle 中添加依赖项和存储库

dependencies {


 compile 'com.twitter.sdk.android:twitter-core:3.1.0'
  compile 'com.twitter.sdk.android:tweet-ui:3.1.0'
  compile 'com.twitter.sdk.android:tweet-composer:3.1.0'
  compile 'com.twitter.sdk.android:twitter-mopub:3.1.0'
}

repositories {
  jcenter()
}

在 Activity 的 oncreate() 中初始化 Twitter Kit

Twitter.initialize(this);

将您的 API 密钥和机密添加到您的应用程序资源。

<resources>
  <string android:name="com.twitter.sdk.android.CONSUMER_KEY">XXXXXXXXXXX</string>
  <string android:name="com.twitter.sdk.android.CONSUMER_SECRET">XXXXXXXXXXX</string>
</resources>

在 xml 中添加 Twitter 按钮

<com.twitter.sdk.android.core.identity.TwitterLoginButton
android:id="@+id/login_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

初始化 Twitter 按钮并获取 TwitterSession.. 成功获取用户信息

loginButton = (TwitterLoginButton) view.findViewById(R.id.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
        Log.e("result", "result " + result);
        TwitterApiClient twitterApiClient = TwitterCore.getInstance().getApiClient();
        AccountService accountService = twitterApiClient.getAccountService();
        Call<User> call = accountService.verifyCredentials(true, true, true);
        call.enqueue(new Callback<com.twitter.sdk.android.core.models.User>() {
            @Override
            public void success(Result<com.twitter.sdk.android.core.models.User> result) {
                //here we go User details
                Log.e("result", "result user " + result);
                String imageUrl = result.data.profileImageUrl;
                String email = result.data.email;
                String userName = result.data.name;
                System.out.println(imageUrl);
                System.out.println(email);
                System.out.println(userName);




        }
        @Override
        public void failure(TwitterException exception) {
            exception.printStackTrace();
        }
    });
}
@Override
public void failure(TwitterException exception) {
    // Do something on failure
    exception.printStackTrace();
}
});

如果您的按钮在片段中,请在活动中添加以下代码

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    //verificationFragment is my fragment
    verificationFragment.onActivityResult(requestCode, resultCode, data);
}

在片段中添加以下代码

public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);


    // Pass the activity result to the login button.
    loginButton.onActivityResult(requestCode, resultCode, data);


}
于 2017-08-11T06:54:45.880 回答
2

代替

Fabric.with(this, new Twitter(authConfig));

写这个:

        TwitterConfig.Builder builder=new TwitterConfig.Builder(this);
        builder.twitterAuthConfig(authConfig);
        Twitter.initialize(builder.build());

此外,您需要在 gradle(app level) 中添加这一行:

编译'com.twitter.sdk.android:twitter:3.0.0'

于 2017-06-30T07:10:27.850 回答
0

来自 Fabric 的 Mike。由于谷歌从 Twitter 收购了 Fabric,Twitter Kit 不再通过 Fabric 提供。您应该按照他们的开发者网站上的说明进行操作。您需要更改的更改如下。

1) 从 Fabric 初始化调用中删除 Twitter。

2)将以下内容添加到您的 build.gradle:

dependencies {
  // Include all the Twitter APIs
  compile 'com.twitter.sdk.android:twitter:3.0.0'
  // (Optional) Monetize using mopub
  compile 'com.twitter.sdk.android:twitter-mopub:3.0.0'
}

3) 确保 jcenter 在您的存储库范围内:

repositories {
  jcenter()
}

4) 在应用程序的 onCreate() 中初始化 Twitter:

public class CustomApplication {
  public void onCreate() {
    Twitter.initialize(this);
  }
}

5) 将您的 API 密钥和秘密添加到您的资源中:

 <resources>
  <string android:name="com.twitter.sdk.android.CONSUMER_KEY">XXXXXXXXXXX</string>
  <string android:name="com.twitter.sdk.android.CONSUMER_SECRET">XXXXXXXXXXX</string>
</resources>
于 2017-06-29T20:26:37.887 回答