1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
package com.pitchedapps.frost.views
import android.annotation.SuppressLint
import android.content.Context
import android.graphics.Bitmap
import android.net.UrlQuerySanitizer
import android.util.AttributeSet
import android.view.View
import android.webkit.WebResourceError
import android.webkit.WebResourceRequest
import android.webkit.WebView
import android.webkit.WebViewClient
import com.facebook.AccessToken
import com.pitchedapps.frost.facebook.FB_KEY
import com.pitchedapps.frost.facebook.retro.FrostApi.frostApi
import com.pitchedapps.frost.facebook.retro.Me
import com.pitchedapps.frost.facebook.retro.enqueueFrost
import com.pitchedapps.frost.utils.L
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
/**
* Created by Allan Wang on 2017-05-29.
*/
class LoginWebView @JvmOverloads constructor(
context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
) : WebView(context, attrs, defStyleAttr) {
init {
setupWebview()
}
@SuppressLint("SetJavaScriptEnabled")
fun setupWebview() {
settings.javaScriptEnabled = true
setLayerType(View.LAYER_TYPE_HARDWARE, null)
setWebViewClient(object : WebViewClient() {
override fun onReceivedError(view: WebView?, request: WebResourceRequest?, error: WebResourceError?) {
super.onReceivedError(view, request, error)
L.e("Error ${request}")
}
override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) {
super.onPageStarted(view, url, favicon)
L.d("Loading $url")
}
override fun onPageFinished(view: WebView?, url: String?) {
super.onPageFinished(view, url)
if (url == null) return
val sanitizer = UrlQuerySanitizer(url)
val accessToken = sanitizer.getValue("access_token")
val expiresIn = sanitizer.getValue("expires_in")
val grantedScopes = sanitizer.getValue("granted_scopes")
val deniedScopes = sanitizer.getValue("deniedScopes")
L.d("Loaded $url")
}
})
}
fun saveAccessToken(accessToken: String, expiresIn: String, grantedScopes: String?, deniedScopes: String?) {
L.d("Granted $grantedScopes")
L.d("Denied $deniedScopes")
frostApi.me().enqueueFrost { call, response ->
}
}
}
|