Skip to content

Commit 21ac7e7

Browse files
authored
Send Java SDK & Target SDK Versions In App2App Auth (#470)
* Sending additional information (targetSdk and Java Sdk Versions) to the Dropbox App during authentication. * Updated documentation.
1 parent 4bf2fc2 commit 21ac7e7

File tree

2 files changed

+34
-4
lines changed

2 files changed

+34
-4
lines changed

dropbox-sdk-android/src/main/java/com/dropbox/core/android/AuthActivity.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,10 +119,9 @@ public open class AuthActivity : Activity() {
119119

120120
// Create intent to auth with official app.
121121
val officialAuthIntent = DropboxAuthIntent.buildOfficialAuthIntent(
122-
callingActivityFullyQualifiedClassName = this@AuthActivity::class.java.name,
122+
authActivity = this@AuthActivity,
123123
mState = mState,
124124
stateNonce = stateNonce,
125-
packageName = this@AuthActivity.packageName
126125
)
127126

128127
/*

dropbox-sdk-android/src/main/java/com/dropbox/core/android/internal/DropboxAuthIntent.kt

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
package com.dropbox.core.android.internal
22

3+
import android.content.Context
34
import android.content.Intent
5+
import android.content.pm.PackageInfo
6+
import android.content.pm.PackageManager
7+
import com.dropbox.core.DbxSdkVersion
48
import com.dropbox.core.android.AuthActivity
59

610
internal object DropboxAuthIntent {
@@ -12,16 +16,29 @@ internal object DropboxAuthIntent {
1216
}
1317
}
1418

19+
fun Context.getTargetSdkVersion(): Int? {
20+
return try {
21+
val packageInfo: PackageInfo = packageManager.getPackageInfo(packageName, 0)
22+
val targetSdkVersion: Int = packageInfo.applicationInfo.targetSdkVersion
23+
targetSdkVersion
24+
} catch (e: Exception) {
25+
null
26+
}
27+
}
28+
1529
/**
1630
* @return Intent to auth with official app
1731
* Extras should be filled in by callee
1832
*/
1933
fun buildOfficialAuthIntent(
2034
mState: AuthSessionViewModel.State,
2135
stateNonce: String,
22-
packageName: String,
23-
callingActivityFullyQualifiedClassName: String
36+
authActivity: AuthActivity,
2437
): Intent {
38+
39+
val callingActivityFullyQualifiedClassName = authActivity::class.java.name
40+
val packageName = authActivity.packageName
41+
2542
return buildActionAuthenticateIntent().apply {
2643
putExtra(EXTRA_CONSUMER_KEY, mState.mAppKey)
2744
putExtra(EXTRA_CONSUMER_SIG, "")
@@ -31,6 +48,10 @@ internal object DropboxAuthIntent {
3148
putExtra(EXTRA_SESSION_ID, mState.mSessionId)
3249
putExtra(EXTRA_CALLING_PACKAGE, packageName)
3350
putExtra(EXTRA_AUTH_STATE, stateNonce)
51+
putExtra(EXTRA_DROPBOX_SDK_JAVA_VERSION, DbxSdkVersion.Version)
52+
authActivity.getTargetSdkVersion()?.let { targetSdkVersion ->
53+
putExtra(EXTRA_TARGET_SDK_VERSION, targetSdkVersion)
54+
}
3455

3556
mState.mTokenAccessType?.apply {
3657
val queryParams = QueryParamsUtil.createExtraQueryParams(
@@ -95,6 +116,16 @@ internal object DropboxAuthIntent {
95116
*/
96117
const val EXTRA_AUTH_STATE: String = "AUTH_STATE"
97118

119+
/**
120+
* Used for internal authentication logic. The targetSdk version of the application using the Dropbox SDK Java.
121+
*/
122+
const val EXTRA_TARGET_SDK_VERSION: String = "TARGET_SDK_VERSION"
123+
124+
/**
125+
* Used for internal authentication logic. The version of this Dropbox SDK Java.
126+
*/
127+
const val EXTRA_DROPBOX_SDK_JAVA_VERSION: String = "DROPBOX_SDK_JAVA_VERSION"
128+
98129
/**
99130
* Used for internal authentication. Allows app to request a specific UID to auth against
100131
* You won't ever have to use this.

0 commit comments

Comments
 (0)