无法在实际设备上检索Facebook的访问令牌 [英] Unable to retrieve access token for facebook on real device

查看:113
本文介绍了无法在实际设备上检索Facebook的访问令牌的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在我的项目中整合了Facebook,一切都在仿真器上。当在真实的设备上运行它不工作。我认为问题是Facebook的访问令牌,我现在不知道该怎么办?所以我无法在真实设备上检索朋友的信息。任何人都可以帮助我如何在真实设备上获取访问权限。



我仅使用Android SDK获取Facebook的朋友信息。

  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);
返回;
}
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); (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

解决方案

上面提供的代码是绝对正确的...问题是如果我们已经在我们的设备上安装了升级版本的任何Facebook应用程序,我们正在使用我们的应用程序将无法正常工作...如果我们卸载我们的设备中的Facebook应用程序,它将工作...还有另一种方法可以通过以下步骤在我们的设备中处理我们的应用程序和其他Facebook应用程序:::
如果你使用eclipse然后goto



Windows>首选项> Android>构建并获取调试密钥库的路径



现在打开终端并运行以下命令



keytool -export -alias androiddebugkey -keystoredebug keystore path| openssl sha1 -binary | openssl enc -a -e



它将要求输入密码,然后输入android作为密码
现在将HASH KEY添加到位于@ <编辑设置/手机和设备的href =http://www.facebook.com/developers/ =noreferrer> http://www.facebook.com/developers/



现在我能够在HTC设备上运行我的应用程序


I did Facebook integration in my project, everything is fine on emulator. When it comes to run on real device it is not working. I think the problem is Facebook access token, I don't know what to do now? So I am unable to retrieve friends information on real device. Can anybody help me how to get access token on real device.

I am using Android SDK only to get the Facebook friends information.

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());
    }
}  

Thanks, Ammu

解决方案

The code above given is absolutely correct...The problem is if we have already installed any facebook application in our device which are upgraded versions than we are using our application will not work...If we uninstall the facebook applications in our device it will work...and there is also another way to work our application and other facebook application in our device by following steps::: if u r using eclipse then goto

Windows>Preferences>Android>Build and get the path of the debug keystore

now open terminal and run the following command

keytool -export -alias androiddebugkey -keystore "debug keystore path" | openssl sha1 -binary | openssl enc -a -e

it will ask for the password then enter android as ur password Now add the HASH KEY to your Facebook API configuration located @ http://www.facebook.com/developers/ under EDIT SETTINGS / Mobile and Devices screen.

Now i was able to run my application on HTC device

这篇关于无法在实际设备上检索Facebook的访问令牌的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆