gpt4 book ai didi

android - Android Fragment 中的 Twitter 登录/身份验证

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:59:44 25 4
gpt4 key购买 nike

我正在尝试使用 Fabric 在 Android 的 fragment 中实现一个 Twitter 登录按钮。我让它在 Activity 中工作,但无法让它在 fragment 中工作。

这是我的 TwitterFragment 类(扩展 fragment )

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

TwitterAuthConfig authConfig = new TwitterAuthConfig(mTWITTER_KEY, mTWITTER_SECRET);
Fabric.with(super.getActivity(), new Twitter(authConfig));

View view = inflater.inflate(R.layout.twitter_fragment, container, false);

loginButton = (TwitterLoginButton) view.findViewById(R.id.twitter_login_button);

loginButton.setCallback(new Callback<TwitterSession>() {
@Override
public void success(Result<TwitterSession> result) {

TwitterSession session = result.data;

String msg = "@" + session.getUserName() + " logged in! (#" + session.getUserId() + ")";
Toast.makeText(getActivity().getApplicationContext(), msg, Toast.LENGTH_LONG).show();
}

@Override
public void failure(TwitterException exception) {
Log.d("TwitterKit", "Login with Twitter failure", exception);
}
});

return view;
}


@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//loginButton.onActivityResult(requestCode, resultCode, data);
Fragment fragment = getFragmentManager().findFragmentById(R.id.twitter_login_button);
if (fragment != null) {
fragment.onActivityResult(requestCode, resultCode, data);
}
}

还有我的 twitter_fragment.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="15dp">

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

</LinearLayout>

我在监视器的前两行中得到这个

Authorization completed with an error
com.twitter.sdk.android.core.TwitterAuthException: Authorize failed.

知道问题出在哪里吗?

谢谢,

最佳答案

我遇到了同样的问题并通过这种方式解决了:

  1. 在MainActivity中,配置Twitter并添加onActivityResult函数:

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

 @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
FragmentManager fragment = getSupportFragmentManager();
if (fragment != null) {
fragment.findFragmentByTag("LoginFragment").onActivityResult(requestCode, resultCode, data);
}
else Log.d("Twitter", "fragment is null");
}
  1. 在您的 LoginFragment 中让您的 Twitter 按钮的 onActivityResult

    @覆盖

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

希望这对您有所帮助,即使对您有帮助,也会对其他遇到这个令人沮丧的问题的人有所帮助。

关于android - Android Fragment 中的 Twitter 登录/身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33701652/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com