fun createAccessTokenFromWebBundle()

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)
    }