0

Picasa 웹 서비스의 경우 authTokenType = "lh2"인 AccountManager.getAuthToken()을 호출하면 Android 5.x에서 반환되지 않습니다. "lh2"가 포함 된 getAuthToken은 Android 4.4.x 및 6.x (5.x가 아닌)에서 여전히 잘 작동합니다. Lollipop은 2016 년 8 월 -9 월까지만해도 괜찮 았지만 코드 또는 앱은 변경되지 않았습니다.lh2 범위의 Android AccountManager getAuthToken이 롤리팝에 대한 콜백을하지 않습니다.

Lollipop 기기에서 'lh2'에 대한 getAuthToken에서이 문제가 발생한 사람은 누구입니까? Picasa 웹 서비스에 계정 인증 토큰을 전달할 수있는 또 다른 방법이 있습니까?

//... 

String accountName = "[email protected]" 
Account selectedAccount = null; 
AccountManager accountManager = (AccountManager)activity.getSystemService(Context.ACCOUNT_SERVICE); 
Account[] list = accountManager.getAccounts(); 
for (android.accounts.Account a:list) { 
    if (a.name.equals(accountName)) { 
     selectedAccount = a; 
     break; 
    } 
} 

accountManager.invalidateAuthToken("com.google", null); 

AccountManagerFuture<Bundle> tokenFuture = getAccountManager().getAuthToken(
    selectedAccount, 
    "lh2", 
    null, 
    activity, 
    new OnTokenAcquired(), 
    new Handler(new OnTokenError())); 

//... 

private class OnTokenAcquired implements AccountManagerCallback<Bundle> { 
    @Override 
    public void run(AccountManagerFuture<Bundle> result) { 
     try { 
      Bundle b = result.getResult(); 
      if (b.containsKey(AccountManager.KEY_INTENT)) { 
       Intent intent = b.getParcelable(AccountManager.KEY_INTENT); 
       int flags = intent.getFlags(); 
       flags &= ~Intent.FLAG_ACTIVITY_NEW_TASK; 
       intent.setFlags(flags); 
       activity.startActivityForResult(intent, REQUEST_AUTHENTICATE); 
       return; 
      } 
      if (b.containsKey(AccountManager.KEY_AUTHTOKEN)) { 
       String authToken = b.getString(AccountManager.KEY_AUTHTOKEN); 

       // set authtoken to Picasa Web Service 
       _picasaService = new PicasawebService("myApp"); 
       _picasaService.setUserToken(authToken); 

       return; 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

private class OnTokenError implements Handler.Callback { 
    @Override 
    public boolean handleMessage(Message msg) { 
     Log.e("onError","ERROR"); 

     return false; 
    } 
} 

//... 

감사 :

여기 getAuthToken에 관련 코드입니다!

답변

관련 문제