从结构中删除后,如何将 twitter 集成到 android 中以进行 twitter 登录?
Posted
技术标签:
【中文标题】从结构中删除后,如何将 twitter 集成到 android 中以进行 twitter 登录?【英文标题】:how to integrate twitter in android for twitter login after it's removal from fabric? 【发布时间】:2017-12-02 23:48:15 【问题描述】:我正在尝试集成 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登录选项:
【问题讨论】:
你需要在你的android studio中添加fabric插件。使用此链接:androidtutorialpoint.com/material-design/… 我有插件,但没有 twitter 登录选项。这些是以下选项:crashlytics、answers、optimizely、stripe、amazon cognito sync、appsee、mapbox、pubnub、game analytics、zendesk , 和分支。 你浏览过我提供的链接吗? 是的,但这里没有推特:i0.wp.com/www.androidtutorialpoint.com/wp-content/uploads/2016/… 我已经添加了我的fabric插件的快照。如你所见,twitter没有选项。 【参考方案1】:在 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_
android:layout_ />
初始化 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);
【讨论】:
我在电子邮件和照片网址中没有得到任何价值【参考方案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'
【讨论】:
【参考方案3】:来自 Fabric 的 Mike。由于谷歌从 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>
【讨论】:
我没有完全理解你的问题@komalakhani - 但它是在第五步中添加的。 别担心..我得到了答案..顺便说一句谢谢:) @Mike 请告诉我如何在我的 Android 应用程序中为 twitter 登录设置回调 URL,我正在创建一个深层链接,但它不起作用..以上是关于从结构中删除后,如何将 twitter 集成到 android 中以进行 twitter 登录?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 iPhone 中的 twitter 集成中取消并返回应用程序?
这是将 Twitter 集成到 android 中的正确方法吗?谁能告诉我如何获取个人资料图片网址?
如何在没有 Facebook、Twitter 等的情况下将社交功能集成到 iOS 和/或 Android 应用程序中?
如何从 android 项目中完全卸载 Twitter 的 Fabric SDK?