2011-02-11 12 views
6

Bu kodu ve belirli bir düzeyde çalışan başkaları kullanmıştım, ancak aşağıdaki hatayı almaya devam ediyorum : Ben geri almak ve tarayıcımda takarak karşı valide access_token kullandım ve o inşaat büyük:Android - OAuthException - "Geçerli kullanıcı hakkındaki bilgileri sorgulamak için etkin bir erişim belirteci kullanılmalıdır"

{"error":{"type":"OAuthException","message":"An active access token must be used to query information about the current user."}} 

İşte kodudur. Ancak bu kod ya geri aldığım erişim belirtecini kullanmıyor gibi görünüyor ya da ben ayarlamam. Hatta params.putString ("access_token", MY_ACCESS_TOKEN) yanı sıra FB.setAccessToken() yöntemini denedim.

Web sitesi URL'si için erişim belirtecini değiştirmem gerekmediğinden, bir url'de olduğu gibi ekolayzır gibi access_token özel bir şey yapmama gerek olmadığını düşünmüyorum ?

Yardımlarınız için teşekkürler. Saatlerce cevaplar için ağı araştırdım ve hiç yok gibi görünüyor.

Bundle params = new Bundle(); 

params.putString("message", "Test"); 
params.putString("name", "American Virgin"); 
params.putString("link", "http://bit.ly/12345"); 
params.putString("description", "A Freshman College Girl on a scholarship from an ..."); 
params.putString("picture", "http://xxx/MOV1026.jpg"); 

mAsyncRunner.request("me/feed", params, "POST", new TestRequestListener()); 
+0

facebook uygulaması cihazımda yüklü iken ben aynı sorun var, aksi takdirde mükemmel çalışır ve veri almak kullanıcı. Bu hata için herhangi bir çözüm buldunuz mu? eğer öyleyse lütfen ansınızı gönderin. –

cevap

1

Aldığınız erişim belirtecinin URL Decoded olması gerekir.
MultiPartEntity(HttpMultipartMode.STRICT);

+0

iyi .. facebook kütüphanesi URL kodunu çözüyor! başka nerede değiştin – Puran

+0

mFacebook = yeni Facebook (FBAPPID); SessionStore.restore (mFacebook, bu); mFacebook.request ("me/feed", params, "POST"); – maxcanna

4

URLDecoder.decode() kullanıyorum. Aşağıdaki kodu eklemeyi denediniz mi?

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     mFacebook.authorizeCallback(requestCode, resultCode, data); 
} 

belgelerine göre, bu içermesi gerekir, kimlik doğrulama da karşılaştığınız hataya neden olabilecek şekilde, düzgün çalışmaz. Aynı problem vardı ama sonra bunu kaçırdığımı fark ettim.

2

şimdi çalışıyor. Ben sadece yorumda kod koydum.

public void authorize(Activity activity, String[] permissions, 
     int activityCode, final DialogListener listener) { 

    boolean singleSignOnStarted = false; 

    mAuthDialogListener = listener; 

    // Prefer single sign-on, where available. 
    //if (activityCode >= 0) { 
    //  singleSignOnStarted = startSingleSignOn(activity, mAppId, 
    //    permissions, activityCode); 
    // } 
    // Otherwise fall back to traditional dialog. 
    if (!singleSignOnStarted) { 
     startDialogAuth(activity, permissions); 
    } 
} 
0

Bu hata iletisiyle başka bir nedenden de karşılaştım. AsyncFacebookRunner, kendisine iletilen bir referansı tutmak yerine, Facebook nesnesinden geçirildiği zamandaki değerleri çekiyor gibi görünüyor.

 

    Facebook fb = new Facebook("appid"); 
    AsyncFacebookRunner runner = new AsyncFacebookRunner(fb); 
    fb.setAccessToken(access_token); 
    fb.setAccessExpires(expires); 
    runner.request("me", new FbRequestListener()); 

Ama böyle bir şey çalışacaktır: Bu nedenle, böyle bir şey çalışmayacak

 

    Facebook fb = new Facebook("appid"); 
    fb.setAccessToken(access_token); 
    fb.setAccessExpires(expires); 
    AsyncFacebookRunner runner = new AsyncFacebookRunner(fb); 
    runner.request("me", new FbRequestListener()); 

İlgili konular