2011-05-07 9 views
10

मैंने अपनी परियोजना में फेसबुक एकीकरण किया, सब कुछ एम्यूलेटर पर ठीक है। जब वास्तविक डिवाइस पर चलाने की बात आती है तो यह काम नहीं कर रहा है। मुझे लगता है कि समस्या फेसबुक एक्सेस टोकन है, मुझे नहीं पता कि अब क्या करना है? तो मैं असली डिवाइस पर दोस्तों की जानकारी पुनर्प्राप्त करने में असमर्थ हूं। क्या कोई मेरी मदद कर सकता है कि वास्तविक डिवाइस पर पहुंच टोकन कैसे प्राप्त करें।वास्तविक डिवाइस पर फेसबुक के लिए एक्सेस टोकन पुनर्प्राप्त करने में असमर्थ

मैं केवल फेसबुक मित्र जानकारी प्राप्त करने के लिए एंड्रॉइड एसडीके का उपयोग कर रहा हूं।

mFacebook = new Facebook("api_id"); 
mFacebook.authorize(this, new String[] { 
    "publish_stream", "read_stream", "offline_access", "friends_birthday", "user_birthday", "email", "read_friendlists", "manage_friendlists" 
}, this); 
sToken = mFacebook.getAccessToken(); 
public void onComplete(Bundle values) { 
    Log.e("oncomplete", "value"); 
    if (values.isEmpty()) { 
     Log.e("oncomplete", "value is empty"); 
     return; 
    } 
    if (!values.containsKey("POST")) { 
     sToken = mFacebook.getAccessToken(); 
     getFriends() 
    } 
} 
private void getFriends() { 
    try { 
     sToken = mFacebook.getAccessToken(); 
     StaticUtils.sResponseId = mFacebook.request("me/friends"); 
     Log.w("response", StaticUtils.sResponseId); 
     try { 
      JSONObject jObj = Util.parseJson(StaticUtils.sResponseId); 
      JSONArray jArr = jObj.getJSONArray("data"); 
      for (int i = 0; i < jArr.length(); i++) { 
       JSONObject jObjFren = jArr.getJSONObject(i); 
       Iterator it = jObjFren.keys(); 
       while (it.hasNext()) { 
        String s = (String) it.next(); 
        // Log.w("KEY",s); 
        String sname = jObjFren.getString(s); 
        if (s.equals("id")) { 
         StaticUtils.sFbId.add(sname); 
         StaticUtils.sFbPics.add(StaticUtils.sImgUrl + sname + "/picture"); 
        } else if (s.equals("name")) { 
         StaticUtils.sFbName.add(sname.toLowerCase()); 
        } 
       } 
      } 
     } catch (JSONException e) { 
      Log.w("json exception", e.toString()); 
     } catch (FacebookError e) { 
      Log.w("facebook exception", e.toString()); 
     } 
    } catch (MalformedURLException e) { 
     Log.w("malformed exception", e.toString()); 
    } catch (IOException e) { 
     Log.w("io exception", e.toString()); 
    } 
} 

धन्यवाद, Ammu

+0

हाँ, शायद किसी को आपकी मदद कर सकता है, तो आप समस्याग्रस्त कोड प्रदान करता है, तो और आपके द्वारा प्राप्त त्रुटि संदेश – Aleadam

+0

मुझे कोई त्रुटि संदेश नहीं मिला ... एम्यूलेटर में मैं दोस्तों की जानकारी को पुनः प्राप्त करने में सक्षम हूं ... उसी कोड के साथ मैं एचटीसी डिवाइस – Taruni

+0

के माध्यम से दोस्तों की जानकारी पुनर्प्राप्त करने में असमर्थ हूं FB मुझे त्रुटि भेजता है एक JSON प्रतिक्रिया के रूप में ssage, क्या आपने ** ** एक त्रुटि संदेश प्राप्त किया है। मैं यह भी नहीं जानता कि आप एंड्रॉइड एसडीके का उपयोग कर रहे हैं या पूछताछ dirctly एफबी। फिर, कोड के बिना, कुछ भी नहीं किया जा सकता है। – Aleadam

उत्तर

11

कोड दिया ऊपर बिल्कुल सही है ... समस्या है अगर हम पहले से ही जो की तुलना में हम हमारे आवेदन का उपयोग कर रहे संस्करणों को अपग्रेड किए जाने हमारे डिवाइस में किसी भी फेसबुक आवेदन स्थापित होगा काम नहीं करते ... अगर हम अपने डिवाइस में फेसबुक एप्लिकेशन को अनइंस्टॉल करते हैं तो यह काम करेगा ... और हमारे डिवाइस में हमारे आवेदन और अन्य फेसबुक एप्लिकेशन को हमारे डिवाइस में काम करने का एक और तरीका है :: यदि आप ग्रहण का उपयोग करते हैं तो गोटो

विंडोज> वरीयताएँ> एंड्रॉइड> बनाएं और प्राप्त करें डिबग कुंजीस्टोर

अब खुला टर्मिनल का पथ और निम्न आदेश

Keytool निर्यात -alias androiddebugkey -keystore "डिबग कुंजीस्टोर पथ" चलाने | openssl sha1 -binary | openssl ENC -E -एक

यह पासवर्ड पूछेंगे तो उर पासवर्ड के रूप में android प्रवेश अब आप अपने फेसबुक एपीआई सेटिंग संपादित करें/मोबाइल और डिवाइस स्क्रीन के नीचे @http://www.facebook.com/developers/ स्थित विन्यास को HASH कुंजी जोड़ें।

अब मैं एचटीसी डिवाइस

2

पर अपने आवेदन को चलाने के लिए सक्षम था इस प्रश्न के लिए एक और जवाब नहीं है। हम अपने मोबाइल डिवाइस पर पूर्व-स्थापित फेसबुक एप्लिकेशन कर सकते हैं, लेकिन हम पहले से इंस्टॉल किए गए एप्लिकेशन से बातचीत नहीं करेंगे, यानी। हम एकल साइन का उपयोग नहीं करेंगे, जिसे एसएसओ के रूप में जाना जाता है (हालांकि इसे उपयोग करने की अनुशंसा की जाती है)। हम इस विधि को फेसबुक एसडीके में रखते हैं। प्राधिकरण() के लिए आपके कॉल में गतिविधि कोड पैरामीटर के रूप में FORCE_DIALOG_AUTH पास करके एकल साइन-ऑन अक्षम किया जा सकता है।

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

यहाँ तीसरे पैरामीटर भूमिका यानी activityCode.Now अपनी भूमिका को देखने

if (activityCode >= 0) { 
     singleSignOnStarted = startSingleSignOn(activity, mAppId, 
       permissions, activityCode); 
    } 
    // Otherwise fall back to traditional dialog. 
    if (!singleSignOnStarted) { 
     startDialogAuth(activity, permissions); 
    } 

इसका मतलब यह है कि अगर हम पूर्व स्थापित फेसबुक आवेदन हम कम से activityCode पास करना साथ अछूता रहना चाहता हूँ की सुविधा देता है निभाता है 0 (< 0) अपनी मुख्य गतिविधि में value.Now जहां फेसबुक एपीआई उपयोग

int FORCE_DIALOG_AUTH =-1; 
mFacebook.authorize(this, new String[] { "publish_stream", 
     "read_stream", "offline_access", "friends_birthday", 
     "user_birthday", "email", "read_friendlists", 
     "manage_friendlists" },FORCE_DIALOG_AUTH , new LoginDialogListener()); 

कहा जाता है हम विरासत +०१२३५१६४१० का उपयोग कराने के लिए चाहते हैं, तो तुलनासंवाद-आधारित प्रमाणीकरण, इस पैरामीटर के लिए FORCE_DIALOG_AUTH पास करें। अन्यथा बस इस पैरामीटर को छोड़ दें और फेसबुक उपयुक्त डिफ़ॉल्ट का उपयोग करेगा। यह एसएसओ से समस्या को हल करने के लिए था।

1

आप sharedReference पर पहुँच टोकन को बचा सकता है जब लॉगिन के रूप में पालन

public void onComplete(Bundle values) 
{ 
    SharedPreferences sp; 
    Editor editor = sp.edit(); 
    editor.putString("access_token",fb.getAccessToken()); 
    editor.putLong("access_expires",fb.getAccessExpires()); 
    editor.commit(); 
} 

और जाँच इस onCreate विधि के रूप में पालन

public void onCreate(Bundle savedInstanceState) 
{   
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_facebook_app); 
     if(access_token != null){ 
      fb.setAccessToken(access_token); 
     } 
     if(expires != 0){ 
      fb.setAccessExpires(expires); 
     }  
} 
संबंधित मुद्दे

 संबंधित मुद्दे