in facebook-common/src/main/java/com/facebook/login/LoginMethodHandler.kt [269:315]
fun createAccessTokenFromWebBundle(
requestedPermissions: Collection<String?>?,
bundle: Bundle,
source: AccessTokenSource?,
applicationId: String
): AccessToken? {
var grantedRequestedPermissions = requestedPermissions
val expires = getBundleLongAsDate(bundle, AccessToken.EXPIRES_IN_KEY, Date())
val token = bundle.getString(AccessToken.ACCESS_TOKEN_KEY) ?: return null
val dataAccessExpirationTime =
getBundleLongAsDate(bundle, AccessToken.DATA_ACCESS_EXPIRATION_TIME, Date(0))
// With Login v4, we now get back the actual permissions granted, so update the permissions
// to be the real thing
val grantedPermissions = bundle.getString("granted_scopes")
if (grantedPermissions != null && grantedPermissions.isNotEmpty()) {
grantedRequestedPermissions = arrayListOf(*grantedPermissions.split(",").toTypedArray())
}
val deniedPermissions = bundle.getString("denied_scopes")
var declinedPermissions: List<String?>? = null
if (deniedPermissions != null && deniedPermissions.isNotEmpty()) {
declinedPermissions = arrayListOf(*deniedPermissions.split(",").toTypedArray())
}
val expiredScopes = bundle.getString("expired_scopes")
var expiredPermissions: List<String?>? = null
if (expiredScopes != null && expiredScopes.isNotEmpty()) {
expiredPermissions = arrayListOf(*expiredScopes.split(",").toTypedArray())
}
if (isNullOrEmpty(token)) {
return null
}
val graphDomain = bundle.getString(AccessToken.GRAPH_DOMAIN)
val signedRequest = bundle.getString("signed_request")
val userId = getUserIDFromSignedRequest(signedRequest)
return AccessToken(
token,
applicationId,
userId,
grantedRequestedPermissions,
declinedPermissions,
expiredPermissions,
source,
expires,
Date(),
dataAccessExpirationTime,
graphDomain)
}