我正在尝试使用新的Google Play服务8.3获取用户令牌ID,并且如我所述,我传递了服务器ID:
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.server_client_id))
.requestEmail()
.build();
Run Code Online (Sandbox Code Playgroud)
但是我仍然得到如下结果:
{statusCode=unknown status code: 12501, resolution=null}
Run Code Online (Sandbox Code Playgroud)
并记录在这里 GoogleSignInStatusCodes
登录已被用户取消.即,用户取消了一些登录决议,例如,帐户选择或OAuth同意.
常数值:12501
这不是我的情况,因为我已经选择了一个帐户.任何想法可能是什么原因?
我试图在纯Java模块中使用LiveData。我在模块gradle文件中添加了依赖性,但是Android studio无法解决依赖性。说LiveData无法解决。它仅适用于Android模块吗?还是我错过了什么?
我在 ViewModel 中有一个重复的可观察对象,如下所示:
class MainViewModel @Inject constructor(private val ratesUseCase: RatesUseCase) : ViewModel() {
private var disposable: Disposable? = null
private val resultLiveData = MutableLiveData<Resource<Map<String, Double>>>()
fun result() = resultLiveData
fun getRates(base: String) {
disposable = Observable
.interval(1, TimeUnit.SECONDS)
.flatMap { ratesUseCase.execute(base) }
.doOnSubscribe { publishResult(Resource.loading(mapOf())) }
.subscribe(
{
publishResult(Resource.success(values))
},
{
publishResult(Resource.error(it.localizedMessage, mapOf()))
}
)
}
}
Run Code Online (Sandbox Code Playgroud)
我想测试 getRates 函数。它总是返回 LOADING 状态 这里缺少什么?
测试用例 :
@Test
fun executeSuccess() {
val base = "CANARY"
whenever(currencyRepository.getRates(base))
.thenReturn(Observable.just(map))
viewModel.result().observeForever(observer)
viewModel.getRates(base)
verify(observer).onChanged(Resource.success(map))
}
Run Code Online (Sandbox Code Playgroud) android ×3
android-architecture-components ×1
java ×1
rx-android ×1
rx-java2 ×1
unit-testing ×1