244 lines
11 KiB
Java
244 lines
11 KiB
Java
package com.facebook;
|
|
|
|
import android.content.Intent;
|
|
import android.os.Bundle;
|
|
import android.os.Handler;
|
|
import android.os.Looper;
|
|
import android.util.Log;
|
|
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
|
|
import com.facebook.AccessToken;
|
|
import com.facebook.GraphRequest;
|
|
import com.facebook.GraphRequestBatch;
|
|
import com.facebook.internal.Utility;
|
|
import com.facebook.internal.Validate;
|
|
import com.liulishuo.filedownloader.model.FileDownloadModel;
|
|
import java.util.Date;
|
|
import java.util.HashSet;
|
|
import java.util.Locale;
|
|
import java.util.concurrent.atomic.AtomicBoolean;
|
|
import org.json.JSONArray;
|
|
import org.json.JSONObject;
|
|
|
|
/* loaded from: classes.dex */
|
|
final class AccessTokenManager {
|
|
private static volatile AccessTokenManager f;
|
|
private final LocalBroadcastManager a;
|
|
private final AccessTokenCache b;
|
|
private AccessToken c;
|
|
private AtomicBoolean d = new AtomicBoolean(false);
|
|
private Date e = new Date(0);
|
|
|
|
private static class RefreshResult {
|
|
public String a;
|
|
public int b;
|
|
|
|
private RefreshResult() {
|
|
}
|
|
}
|
|
|
|
AccessTokenManager(LocalBroadcastManager localBroadcastManager, AccessTokenCache accessTokenCache) {
|
|
Validate.a(localBroadcastManager, "localBroadcastManager");
|
|
Validate.a(accessTokenCache, "accessTokenCache");
|
|
this.a = localBroadcastManager;
|
|
this.b = accessTokenCache;
|
|
}
|
|
|
|
static AccessTokenManager d() {
|
|
if (f == null) {
|
|
synchronized (AccessTokenManager.class) {
|
|
if (f == null) {
|
|
f = new AccessTokenManager(LocalBroadcastManager.a(FacebookSdk.b()), new AccessTokenCache());
|
|
}
|
|
}
|
|
}
|
|
return f;
|
|
}
|
|
|
|
private boolean e() {
|
|
if (this.c == null) {
|
|
return false;
|
|
}
|
|
Long valueOf = Long.valueOf(new Date().getTime());
|
|
return this.c.getSource().canExtendToken() && valueOf.longValue() - this.e.getTime() > 3600000 && valueOf.longValue() - this.c.getLastRefresh().getTime() > 86400000;
|
|
}
|
|
|
|
AccessToken b() {
|
|
return this.c;
|
|
}
|
|
|
|
boolean c() {
|
|
AccessToken b = this.b.b();
|
|
if (b == null) {
|
|
return false;
|
|
}
|
|
a(b, false);
|
|
return true;
|
|
}
|
|
|
|
private static GraphRequest b(AccessToken accessToken, GraphRequest.Callback callback) {
|
|
return new GraphRequest(accessToken, "me/permissions", new Bundle(), HttpMethod.GET, callback);
|
|
}
|
|
|
|
void a(AccessToken accessToken) {
|
|
a(accessToken, true);
|
|
}
|
|
|
|
private void a(AccessToken accessToken, boolean z) {
|
|
AccessToken accessToken2 = this.c;
|
|
this.c = accessToken;
|
|
this.d.set(false);
|
|
this.e = new Date(0L);
|
|
if (z) {
|
|
if (accessToken != null) {
|
|
this.b.a(accessToken);
|
|
} else {
|
|
this.b.a();
|
|
Utility.a(FacebookSdk.b());
|
|
}
|
|
}
|
|
if (Utility.a(accessToken2, accessToken)) {
|
|
return;
|
|
}
|
|
a(accessToken2, accessToken);
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: private */
|
|
public void b(final AccessToken.AccessTokenRefreshCallback accessTokenRefreshCallback) {
|
|
final AccessToken accessToken = this.c;
|
|
if (accessToken == null) {
|
|
if (accessTokenRefreshCallback != null) {
|
|
accessTokenRefreshCallback.a(new FacebookException("No current access token to refresh"));
|
|
}
|
|
} else {
|
|
if (!this.d.compareAndSet(false, true)) {
|
|
if (accessTokenRefreshCallback != null) {
|
|
accessTokenRefreshCallback.a(new FacebookException("Refresh already in progress"));
|
|
return;
|
|
}
|
|
return;
|
|
}
|
|
this.e = new Date();
|
|
final HashSet hashSet = new HashSet();
|
|
final HashSet hashSet2 = new HashSet();
|
|
final AtomicBoolean atomicBoolean = new AtomicBoolean(false);
|
|
final RefreshResult refreshResult = new RefreshResult();
|
|
GraphRequestBatch graphRequestBatch = new GraphRequestBatch(b(accessToken, new GraphRequest.Callback(this) { // from class: com.facebook.AccessTokenManager.2
|
|
@Override // com.facebook.GraphRequest.Callback
|
|
public void a(GraphResponse graphResponse) {
|
|
JSONArray optJSONArray;
|
|
JSONObject b = graphResponse.b();
|
|
if (b == null || (optJSONArray = b.optJSONArray("data")) == null) {
|
|
return;
|
|
}
|
|
atomicBoolean.set(true);
|
|
for (int i = 0; i < optJSONArray.length(); i++) {
|
|
JSONObject optJSONObject = optJSONArray.optJSONObject(i);
|
|
if (optJSONObject != null) {
|
|
String optString = optJSONObject.optString("permission");
|
|
String optString2 = optJSONObject.optString(FileDownloadModel.STATUS);
|
|
if (!Utility.c(optString) && !Utility.c(optString2)) {
|
|
String lowerCase = optString2.toLowerCase(Locale.US);
|
|
if (lowerCase.equals("granted")) {
|
|
hashSet.add(optString);
|
|
} else if (lowerCase.equals("declined")) {
|
|
hashSet2.add(optString);
|
|
} else {
|
|
Log.w("AccessTokenManager", "Unexpected status: " + lowerCase);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}), a(accessToken, new GraphRequest.Callback(this) { // from class: com.facebook.AccessTokenManager.3
|
|
@Override // com.facebook.GraphRequest.Callback
|
|
public void a(GraphResponse graphResponse) {
|
|
JSONObject b = graphResponse.b();
|
|
if (b == null) {
|
|
return;
|
|
}
|
|
refreshResult.a = b.optString(AccessToken.ACCESS_TOKEN_KEY);
|
|
refreshResult.b = b.optInt("expires_at");
|
|
}
|
|
}));
|
|
graphRequestBatch.a(new GraphRequestBatch.Callback() { // from class: com.facebook.AccessTokenManager.4
|
|
@Override // com.facebook.GraphRequestBatch.Callback
|
|
public void a(GraphRequestBatch graphRequestBatch2) {
|
|
AccessToken accessToken2 = null;
|
|
try {
|
|
if (AccessTokenManager.d().b() != null && AccessTokenManager.d().b().getUserId() == accessToken.getUserId()) {
|
|
if (!atomicBoolean.get() && refreshResult.a == null && refreshResult.b == 0) {
|
|
if (accessTokenRefreshCallback != null) {
|
|
accessTokenRefreshCallback.a(new FacebookException("Failed to refresh access token"));
|
|
}
|
|
AccessTokenManager.this.d.set(false);
|
|
AccessToken.AccessTokenRefreshCallback accessTokenRefreshCallback2 = accessTokenRefreshCallback;
|
|
return;
|
|
}
|
|
AccessToken accessToken3 = new AccessToken(refreshResult.a != null ? refreshResult.a : accessToken.getToken(), accessToken.getApplicationId(), accessToken.getUserId(), atomicBoolean.get() ? hashSet : accessToken.getPermissions(), atomicBoolean.get() ? hashSet2 : accessToken.getDeclinedPermissions(), accessToken.getSource(), refreshResult.b != 0 ? new Date(refreshResult.b * 1000) : accessToken.getExpires(), new Date());
|
|
try {
|
|
AccessTokenManager.d().a(accessToken3);
|
|
AccessTokenManager.this.d.set(false);
|
|
AccessToken.AccessTokenRefreshCallback accessTokenRefreshCallback3 = accessTokenRefreshCallback;
|
|
if (accessTokenRefreshCallback3 != null) {
|
|
accessTokenRefreshCallback3.a(accessToken3);
|
|
return;
|
|
}
|
|
return;
|
|
} catch (Throwable th) {
|
|
th = th;
|
|
accessToken2 = accessToken3;
|
|
AccessTokenManager.this.d.set(false);
|
|
AccessToken.AccessTokenRefreshCallback accessTokenRefreshCallback4 = accessTokenRefreshCallback;
|
|
if (accessTokenRefreshCallback4 != null && accessToken2 != null) {
|
|
accessTokenRefreshCallback4.a(accessToken2);
|
|
}
|
|
throw th;
|
|
}
|
|
}
|
|
if (accessTokenRefreshCallback != null) {
|
|
accessTokenRefreshCallback.a(new FacebookException("No current access token to refresh"));
|
|
}
|
|
AccessTokenManager.this.d.set(false);
|
|
AccessToken.AccessTokenRefreshCallback accessTokenRefreshCallback5 = accessTokenRefreshCallback;
|
|
} catch (Throwable th2) {
|
|
th = th2;
|
|
}
|
|
}
|
|
});
|
|
graphRequestBatch.c();
|
|
}
|
|
}
|
|
|
|
private void a(AccessToken accessToken, AccessToken accessToken2) {
|
|
Intent intent = new Intent("com.facebook.sdk.ACTION_CURRENT_ACCESS_TOKEN_CHANGED");
|
|
intent.putExtra("com.facebook.sdk.EXTRA_OLD_ACCESS_TOKEN", accessToken);
|
|
intent.putExtra("com.facebook.sdk.EXTRA_NEW_ACCESS_TOKEN", accessToken2);
|
|
this.a.a(intent);
|
|
}
|
|
|
|
void a() {
|
|
if (e()) {
|
|
a((AccessToken.AccessTokenRefreshCallback) null);
|
|
}
|
|
}
|
|
|
|
private static GraphRequest a(AccessToken accessToken, GraphRequest.Callback callback) {
|
|
Bundle bundle = new Bundle();
|
|
bundle.putString("grant_type", "fb_extend_sso_token");
|
|
return new GraphRequest(accessToken, "oauth/access_token", bundle, HttpMethod.GET, callback);
|
|
}
|
|
|
|
void a(final AccessToken.AccessTokenRefreshCallback accessTokenRefreshCallback) {
|
|
if (Looper.getMainLooper().equals(Looper.myLooper())) {
|
|
b(accessTokenRefreshCallback);
|
|
} else {
|
|
new Handler(Looper.getMainLooper()).post(new Runnable() { // from class: com.facebook.AccessTokenManager.1
|
|
@Override // java.lang.Runnable
|
|
public void run() {
|
|
AccessTokenManager.this.b(accessTokenRefreshCallback);
|
|
}
|
|
});
|
|
}
|
|
}
|
|
}
|