C#中的Facebook Android API中的NewMeRequest

时间:2015-05-20 08:20:57

标签: c# android facebook facebook-graph-api xamarin

我一直试图通过以下代码在Xamarin Studio中使用Facebook API for Android进行Request.NewMeRequest:

Request.NewMeRequest (currentSession, new Request.IGraphUserCallback() {
    override void OnCompleted(IGraphUser user, Response Response){
        Console.WriteLine(user.FirstName);
    }
}).ExecuteAsync ();

但是Xamarin Studio会出现一些错误,所以我认为我在C#中没有采用正确的方法。有人有一些如何做到这一点的示例代码,或者为什么这不起作用的一些解释?

提前致谢!

修改 感谢@Guilherme的帮助,它现在没有返回任何错误,但我遇到了以下问题:

我已将代码更改为您的答案:

public class MainActivity : Activity, ILocationListener, Request.IGraphUserCallback
{

    ...

    Session currentSession = Session.ActiveSession;

    protected override void OnCreate (Bundle bundle)
    {
        base.OnCreate (bundle);
        SetContentView (Resource.Layout.Main);

        ...

        Console.WriteLine ("current session: " + currentSession.AccessToken);
        Request.NewMeRequest (currentSession, this).ExecuteAsync();
    }

    public void OnCompleted (IGraphUser user, Response response)
    {
        Console.WriteLine (user.Username);
    }

    ...

}

但现在它没有重新调整当前登录用户的用户名。会话不是问题,因为它是正确的。

1 个答案:

答案 0 :(得分:1)

当然这不适用于c#,因为它不支持匿名类

让您的类实现IGraphUserCallback并将其作为参数传递,然后:

<?
namespace Application;

use Zend\Db\TableGateway\Feature;
use Zend\Mvc\ModuleRouteListener;
use Zend\Mvc\MvcEvent;
use Zend\ModuleManager\Feature\ServiceProviderInterface;

use Model;
use Zfe;

class Module implements  ServiceProviderInterface { 
public function onBootstrap(MvcEvent $e) {
    $eventManager = $e->getApplication()->getEventManager();
    $moduleRouteListener = new ModuleRouteListener();
    $moduleRouteListener->attach($eventManager);
    $this->initDatabase($e);
}        

public function initDatabase($e) {        
    Feature\GlobalAdapterFeature::setStaticAdapter($e->getApplication()->getServiceManager()->get('Zend\Db\Adapter\Adapter'));
}

public function getConfig() {
    return include __DIR__ . '/config/module.config.php';
}

public function getServiceConfig() {
    return array(
            'factories' => array(
                    'dbadapter'    => new Zfe\Factory('db'),
            ),
    );
}

public function getAutoloaderConfig() {
    return array(
        'Zend\Loader\StandardAutoloader' => array(
            'namespaces' => array(
                __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
            ),
        ),
    );
}
}