カスタムTwitterログインボタンSDK(ファブリックキット)

この記事は、Twitter Login SDK( Fabric kit )をインストールして構成する方法を既に理解しているが、ログインボタンにカスタムUIを実装する方法の問題にこだわっている人を対象としています。 Fabricの入門記事はこちらにあります



「最後に、このかさばるコードを取り除きます」と思い、twitter4jを削除し、Twitter SDKのおかげでどのようにすてきな認証クラスが役立つかを予想しました。 土曜日の朝でした。 私の計算によると、これには1時間もかからなかったはずです。 夕方、私は少しのリファクタリングのために1日休みを犠牲にすることにしたあの愚か者を呪った。



どうしたの? まず第一に、Fabricプラグインがあなたのためにすべてをすることを信じないでください。 まったく逆です-あなたはまだ彼と一緒に泣きます。 そのため、ログインタスクを解決する人のために、ここを同時に見ることをお勧めします。



sdkが提供するTwitterLoginButtonウィジェットを使用すると、すべてが明確になりますが、標準設計に慣れていない人はどうでしょうか。 長時間のグーグル検索では何も得られませんでした。 API参照、java doc、またはソースコードがまったくないため、タスクが単純化されませんでした。



結局、私はこのような松葉杖を見つけました:



private void loginToTwitter() { TwitterCore.getInstance().logIn(this, new Callback<TwitterSession>() { @Override public void success(Result<TwitterSession> twitterSessionResult) { Log.i(LOG_TAG, "success"); } @Override public void failure(TwitterException e) { Log.i(LOG_TAG, "failure"); } }); }
      
      





そして、このすべてが機能するように(ああ、恐ろしい!):



 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); (new TwitterLoginButton(this)).onActivityResult(requestCode, resultCode, data); }
      
      





数日後、私は気にしませんでした、私は通常の解決策を見つける力を見つけました。 すべてが非常にシンプルであることが判明しました。



  private TwitterAuthClient client; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); TwitterAuthConfig authConfig = new TwitterAuthConfig(TWITTER_KEY, TWITTER_SECRET); Fabric.with(this, new Twitter(authConfig)); Button customLoginButton = (Button) findViewById(R.id.custom_twitter_login); customLoginButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { client = new TwitterAuthClient(); client.authorize(LoginActivity.this, new Callback<TwitterSession>() { @Override public void success(Result<TwitterSession> twitterSessionResult) { Toast.makeText(LoginActivity.this, "success", Toast.LENGTH_SHORT).show(); } @Override public void failure(TwitterException e) { Toast.makeText(LoginActivity.this, "failure", Toast.LENGTH_SHORT).show(); } }); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); client.onActivityResult(requestCode, resultCode, data); }
      
      





SDKドキュメントに関する最新の情報がある場合は、次のように書いてください-喜んで記事に追加します。



Githubのソースコード: github.com/Defuera/Social-network-login



All Articles