如何在 android 中集成 twitter,以便在从 fabric 中删除后登录 twitter?
how to integrate twitter in android for twitter login after it's removal from fabric?
我正在尝试集成 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'。它有红色color.This是代码:
Fabric.with(this, new Twitter(authConfig));
另外,'Twitter'下面有红色下划线,出现如下错误:
'Twitter(com.twitter.sdk.android.core.TwitterConfig)' has private
access in 'com.twitter.sdk.android.core.Twitter'
此外,我试过 android studio 的 fabric 插件,但是没有登录 twitter 的选项:
这里是来自 Fabric 的迈克。由于 Google 从 Twitter 收购了 Fabric,Twitter Kit 不再通过 Fabric 提供。您应该按照他们 developer site 上的说明进行操作。您需要更改的更改如下。
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>
而不是
Fabric.with(this, new Twitter(authConfig));
这样写:
TwitterConfig.Builder builder=new TwitterConfig.Builder(this);
builder.twitterAuthConfig(authConfig);
Twitter.initialize(builder.build());
此外,您需要在 gradle(应用级别)中添加此行:
compile 'com.twitter.sdk.android:twitter:3.0.0'
在 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();
}
});
如果你的按钮是fragment,在activity中添加如下代码
@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);
}
我正在尝试集成 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'。它有红色color.This是代码:
Fabric.with(this, new Twitter(authConfig));
另外,'Twitter'下面有红色下划线,出现如下错误:
'Twitter(com.twitter.sdk.android.core.TwitterConfig)' has private access in 'com.twitter.sdk.android.core.Twitter'
此外,我试过 android studio 的 fabric 插件,但是没有登录 twitter 的选项:
这里是来自 Fabric 的迈克。由于 Google 从 Twitter 收购了 Fabric,Twitter Kit 不再通过 Fabric 提供。您应该按照他们 developer site 上的说明进行操作。您需要更改的更改如下。
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>
而不是
Fabric.with(this, new Twitter(authConfig));
这样写:
TwitterConfig.Builder builder=new TwitterConfig.Builder(this);
builder.twitterAuthConfig(authConfig);
Twitter.initialize(builder.build());
此外,您需要在 gradle(应用级别)中添加此行:
compile 'com.twitter.sdk.android:twitter:3.0.0'
在 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 KitTwitter.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();
}
});
如果你的按钮是fragment,在activity中添加如下代码
@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);
}