android – 在设备模拟器上安装Facebook应用程序时,发布到用户Facebook墙不能正常工作

android – 在设备模拟器上安装Facebook应用程序时,发布到用户Facebook墙不能正常工作,第1张

概述我已经构建了一个使用 this实现的活动(请参阅接受的答案),在用户的Facebook墙上发布状态更新. 如果模拟器/手机没有安装Facebook应用程序,它没有问题. 如果模拟器/手机安装了Facebook应用程序,Facebook应用程序加载登录屏幕,但在尝试登录后,Facebook应用程序刚刚消失,将我带回我的应用程序. 安装Facebook应用程序时有没有人有这种体验? 我的代码: pub 我已经构建了一个使用 this实现的活动(请参阅接受的答案),在用户的Facebook墙上发布状态更新.

如果模拟器/手机没有安装Facebook应用程序,它没有问题.

如果模拟器/手机安装了Facebook应用程序,Facebook应用程序加载登录屏幕,但在尝试登录后,Facebook应用程序刚刚消失,将我带回我的应用程序.

安装Facebook应用程序时有没有人有这种体验?

我的代码:

public class AchIEvementActivity extends Activity implements DialogListener,OnClickListener{private Facebook facebook;button facebookPostbutton;String defaultFacebookPost;@OverrIDepublic voID onCreate(Bundle savedInstanceState){    super.onCreate(savedInstanceState);    requestwindowFeature(Window.FEATURE_CUSTOM_Title);    setContentVIEw(R.layout.achIEvements);    getwindow().setFeatureInt(Window.FEATURE_CUSTOM_Title,R.layout.custom_Title_layout);    VIEw achIEvementdivIDer = (VIEw)findVIEwByID(R.ID.achIEvementdivIDer);    int[] colors = {0,0xff00ffff,0};    achIEvementdivIDer.setBackgroundDrawable(new GradIEntDrawable(OrIEntation.RIGHT_left,colors));    //get the Title of the achIEvement from the intent that started this activity from the activity StatisticsActivity    String achIEvementTitleString = getIntent().getStringExtra("Title");    String achIEvementTextTodisplay = getAchIEvementTextTodisplay(achIEvementTitleString);    defaultFacebookPost = getDefaultPost(achIEvementTitleString);    //ImageVIEw achIEvementActivityAchIEvementBadgeImageVIEw = (ImageVIEw)findVIEwByID(R.ID.achIEvementActivityAchIEvementBadgeImageVIEw);    TextVIEw achIEvementActivityBadgeTitleTextVIEw = (TextVIEw)findVIEwByID(R.ID.achIEvementActivityBadgeTitleTextVIEw);        achIEvementActivityBadgeTitleTextVIEw.setText(achIEvementTitleString);    TextVIEw achIEvementActivityAchIEvementText = (TextVIEw)findVIEwByID(R.ID.achIEvementActivityAchIEvementText);        achIEvementActivityAchIEvementText.setText(achIEvementTextTodisplay);    facebookPostbutton = (button)findVIEwByID(R.ID.facebookPostbutton);    facebookPostbutton.setonClickListener(this);}@OverrIDepublic voID onComplete(Bundle values) {    if (values.isEmpty())    {        Toast.makeText(getApplicationContext(),"Empty",Toast.LENGTH_SHORT);        return;    }    if (!values.containsKey("post_ID"))    {        try        {            Bundle parameters = new Bundle();            parameters.putString("message",defaultFacebookPost);// the message to post to the wall            facebook.dialog(AchIEvementActivity.this,"stream.publish",parameters,this);// "stream.publish" is an API call        }        catch (Exception e)        {            // Todo: handle exception                System.out.println(e.getMessage());        }    }    try     {        facebook.logout(getApplicationContext());    }     catch (MalformedURLException e)     {        // Todo auto-generated catch block        e.printstacktrace();    }     catch (IOException e)     {        // Todo auto-generated catch block        e.printstacktrace();    }}@OverrIDepublic voID onFacebookError(FacebookError error) {    Toast.makeText(AchIEvementActivity.this,"onFacebookError",Toast.LENGTH_LONG); }@OverrIDepublic voID onError(DialogError e) {    Toast.makeText(AchIEvementActivity.this,"onError",Toast.LENGTH_LONG); }@OverrIDepublic voID onCancel() {    Toast.makeText(AchIEvementActivity.this,"onCancel",Toast.LENGTH_LONG);}@OverrIDepublic voID onClick(VIEw v){    if (v == facebookPostbutton)    {        facebook = new Facebook("my_facebook_API");        // replace APP_API_ID with your own        facebook.authorize(this,new String[] {"publish_stream","read_stream","offline_access"},this);     }}private String getDefaultPost(String defaultTitleString) {    //do some stuff here to get a string to post to wall    return defaultPost;}private String getAchIEvementTextTodisplay(String achIEvementTitleString) {    String achIEvementTextTodisplay = "DEFAulT";    //do some stuff here to get text to display in the activity            //this has nothing to do with the facebook post...    return achIEvementTextTodisplay;}}

Logcat告诉我这个:

05-11 13:03:34.076: INFO/ActivityManager(98): Starting activity: Intent { cmp=com.facebook.katana/.ProxyAuth (has extras) }05-11 13:03:34.246: INFO/ActivityManager(98): displayed activity com.facebook.katana/.ProxyAuth: 158 ms (total 158 ms)05-11 13:03:35.166: DEBUG/dalvikvm(12390): GC_FOR_MALLOC freed 6729 objects / 418424 bytes in 44ms05-11 13:03:35.166: DEBUG/webvIEwglue(12390): nativeDestroy vIEw: 0x527e2005-11 13:03:35.166: DEBUG/NativeCrypto(12390): Freeing OpenSSL session

编辑
:在过去一年中必须在多台机器上安装AndroID开发平台并且在创建新的开发环境后总是遇到Facebook的问题,我发现这个简单的答案可能是Facebook实现在一个设备上工作的原因不是另一个……

秘密的Facebook API密钥(您在developer.facebook.com上列出的密钥)对于您使用不同证书打包的每个版本的应用程序都会有所不同.例如,假设您有两台开发机器.由于这两台计算机都将使用不同的证书构建您的应用程序,因此您必须确保为每台计算机生成一个Facebook API密钥,并将它们列在developer.facebook.com上.

解决方法 这是因为当您登录Facebook帐户时,您的登录会话将在设备中创建.完成任务后,您必须从Facebook注销. 总结

以上是内存溢出为你收集整理的android – 在设备/模拟器上安装Facebook应用程序时,发布到用户Facebook墙不能正常工作全部内容,希望文章能够帮你解决android – 在设备/模拟器上安装Facebook应用程序时,发布到用户Facebook墙不能正常工作所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1128339.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存