Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
232 lines (162 sloc) 14.6 KB

RxSocialLogin CircleCI

Awesome Kotlin Badge

The license information for logo is located at the bottom of the document.

These instructions are available in their respective languages.

Introduction

このAndroidライブラリは、RxJava2KotlinFirebase 認証を搭載した15プラットフォームのソーシャルログインを提供するライブラリです。

このライブラリは、@WindSekirunSocialLoginライブラリの改良版です。 以下は、ライブラリの変更点です。

  • 結果の配信方法が'Listener'の代わりに'RxJava'を経由するように変更されました。
  • Javaで書かれた元と比較して、改良されたバージョンはKotlinでのみ書かれています。
  • サポートされている元の6プラットフォームと比較して、改良されたバージョンは15プラットフォームをサポートしています。
  • Kotlinに作成されたType-Safe builderを提供しています。
  • すべてのメソッドとコードが書き直されました。
  • Kotlinで書かれているが、Javaと互換性があるように作成しました。

サポートされているプラットフォーム

Platform Data Version
Disqus id, name, email, nickname, profilePicture, accessToken 1.0.0
Facebook id, name, email, profilePicture, gender, firstName, accessToken 0.5.0
Foursquare id, name, email, firstName, gender, birthDay, profilePicture, accessToken 1.0.0
Github id, name, email, profilePicture, emailVerified, accessToken 1.0.0
Google id, name, email, profilePicture, emailVerified 0.5.0
Kakao id, name, email, profilePicture, thumbnailImage, ageRange, birthDay, gender, emailVerified 0.5.0
Line id, name, accessToken 0.5.0
LinkedIn id, name, email, profilePicture, firstName, accessToken 1.0.0
Naver id, name, email, nickname, gender, profilePicture, age, birthDay, accessToken 0.5.0
Twitch id, name, email, profilePicture, accessToken 1.0.0
Twitter id, name, nickname, email, profilePicture 0.5.0
VK id, name, email, profilePicture, nickname, firstName, birthDay 1.0.0
Windows id, name, email 1.0.0
Wordpress id, name, email, profilePicture, emailVerified, accessToken 1.0.0
Yahoo id, name 1.0.0

プラットフォームの名前をクリックして、プラットフォームの適用方法に移動します。

インポート

ルートフォルダの build.gradleに次のコードを追加します。

allprojects {
	repositories {
		maven { url 'http://devrepo.kakao.com:8088/nexus/content/groups/public/' }
		maven { url 'https://jitpack.io' }
	}
}

使用するモジュールの build.gradleに次の依存関係を追加します。

dependencies {
	implementation 'com.github.WindSekirun:RxSocialLogin:1.1.0'
    
	// RxJava
	implementation 'io.reactivex.rxjava2:rxandroid:lastest-version'
	implementation 'io.reactivex.rxjava2:rxjava:lastest-version'
}

RxJavaはアクティブなライブラリです。新しい拡張機能を有効にするには、常に最新のバージョンを保持する必要があります。 したがって、RxJavaを依存関係の末尾に追加することをお勧めします。

  • RxAndroid:

  • RxJava:

1.0.0での移行

1.1.0は1.0.0に比べて理解すべき大きな変化があります。以下は、その変化点です。

  • JavaのビルダーからDSLビルダーへの移行
  • RxSocialLoginのインスタンスの管理
  • onActivityResultイベント共通化
  • 結果を購読方法を変更する

Release Notesは,ここで見ることができます

簡単な5ステップの使用方法

まず、 Applicationクラスの ConfigDSLBuilderを使ってモジュールを初期化します。ConfigDSLBuilderは、プラットフォームに合わせて設定を構成することができるように提供しています。

class MainApplication : Application() {

    override fun onCreate() {
        super.onCreate()

        initSocialLogin {
            facebook(getString(R.string.facebook_api_key)) {
                behaviorOnCancel = true
                requireWritePermissions = false
                imageEnum = FacebookConfig.FacebookImageEnum.Large
            }
        }
    }
}

initSocialLoginブロック内でfacebook、googleのようなプラットフォーム名を持つメソッドを使用することができます。 setupパラメータを除いた残りのパラメータは、ソーシャルログイン機能を使用するために必要な情報です。

setupパラメータは、生成されたConfigオブジェクト(例えば、FacebookConfig)を提供し、 behaviorOnCancelimageEnumなどの追加オプションを提供する関数です。メソッドに提供しなくても、nullに提供することはできません。

たとえConfigDSLBuilderKotlin Type-Safe buildersで構成されても、**はまだJava言語との互換性になります。**オリジナルの setup高階関数が提供する機能をConfigFunctionというインターフェースで提供します。

KotlinJava にされたConfigDSLBuilderの完全な例を見ることができています。

次に、 Activityクラスの onStart メソッドで RxSocialLogin.initialize(this)を呼び出します。

override fun onStart() {
    super.onStart()
    RxSocialLogin.initialize(this)
}

次に、 Activityクラスの onCreate メソッドで RxSocialLogin.resultを呼び出す前に、RxSocialLogin.initialize(this)を呼び出します。

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    ...
    RxSocialLogin.initialize(this)
}

1.1.0からRxSocialLoginクラスがログインオブジェクトのインスタンスを管理するため、ログインオブジェクトの初期化を気にする必要はありません。

次に、onActivityResultメソッドでRxSocialLogin.activityResult(requestCode、resultCode、data) を呼び出します。

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent ? ) {
    super.onActivityResult(requestCode, resultCode, data)
    RxSocialLogin.activityResult(requestCode, resultCode, data)
}

次に、結果を得ようとするところえ RxSocialLogin.resultを呼び出します。アクティビティのほかのクラスにも使用が可能です。

RxSocialLogin.result()
    .subscribe({ item -> 

    }, { throwable ->

    }).addTo(compositeDisposable)

最後に、RxSocialLogin.login(PlatformType.FACEBOOK)を呼び出して、ソーシャルログイン機能を開始します。

使用にについての説明

Apply to Proguard

サンプルアプリケーションのProguardルール を参照してください。

制約 - すべてのアクションはメインスレッドを保持する必要があります

すべてのアクションはメインスレッドを保持する必要があります。 ライブラリが内でネットワークを使用している場合、Fuelを使用して内部的に正しく処理されるため、 RxSocialLoginによって返される Observableはメインスレッドを保持します。 メインスレッドでない場合は、すぐにログインに失敗します。

言い換えれば、以下のケースは処理されず、即座に LoginFailedExceptionとして扱われます。

RxSocialLogin.result()
		.subscribeOn(Schedulers.io())
		.observeOn(AndroidSchedulers.mainThread())
		...

この制約のため、flatmapなのでネットワーク処理の直後にソーシャルログインを開始することはできません。このケースを処理する必要がある場合は、ネットワーク処理後にサブスクライブする際に RxSocialLoginを別々に呼び出す方が良いと思います。

OnErrorNotImplementedExceptionが発生しました

一般的なエラーはOnErrorNotImplementedExceptionです。これは subscribe時に onErrorを適切に処理していないからです。

UndeliverableExceptionが発生しました

0.5.0に基づいて、例外が onErrorに渡されないとき、UndeliverableExceptionが発生されます。RxJavaPlugins.setErrorHandler { e -> }によってこの問題を解決する事が出来るですが、ごのメソッドによってRxJavaPlugins全ての行動が変わるので、ご注意ください。

1.0.0以降では、この問題を解決するために LoginFailedException IllegalStateExceptionを継承するように変更されました。 したがって、それ以降のバージョンでは発生しません。

詳細については、Error handlingを参照してください。

Targeting below of API 21

現在(1.1.0)、minSdkVersionにAPI16をサポートしているが com.microsoft.identify.client:msalライブラリがminSdkVersionにAPI26をサポートしています。

android](https://github.com/AzureAD/microsoft-authentication-library-for-android/issues/263) によると、ライブラリをオーバーライドすることでminSdkVersionの衝突を回避することができます。

競合を解決するために、次のコードをAndroidManifest.xmlに挿入します。

<uses-sdk tools:overrideLibrary="com.microsoft.identity.msal"/>

著者&貢献者

Issue Trackerには、バグの発見、改善、新しいプラットフォームの追加など、さまざまな問題を受け取ります。Pull Requestはいつでも歓迎します。

ライセンス

  • ReactiveXロゴはSeeklogoから取得しました。
  • ロゴに使用されるフォントは'Hanken Design Co.'さんのHanken roundで、このフォントはSIL OFLに従います。 プロジェクトにはロゴ用のPSDファイルがあります。
  • サンプルに使用されているプラットフォームロゴの著作権は、各社に存在します。 RxSocialLoginライブラリは、プラットフォーム会社に関連付けられていません。
Copyright 2017 - 2018 WindSekirun (DongGil, Seo)

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
You can’t perform that action at this time.